简体   繁体   中英

How to write query for following output in MySQL

Requirements: I want to show the stock for particular B_Name, if date are same it will show on same row, if date are not same it will show on different row and also '-' will be specify

Two tables namely gr and frosted

table gr:
B_Name  B_Date         B_Qty   
A       2015-08-11     15000    
A       2015-08-15     25000      
A       2015-08-31     20000    

table frosted:

M_Name       M_Date       M_Qty   
    A       2015-08-11    15000    
    A       2015-08-25    25000      
    B       2015-08-20    20000 
    A       2015-08-15    15000

Following output:

             for Particular B_Name like here (A)
     Date        Inward(B_Qty) Outward(M_Qty)
    2015-08-11     15000      15000
    2015-08-15     25000      15000
    2015-08-31     20000        -
    2015-08-25      -         25000

I tried join and union but it is not working as per my requirements.

You want records from table gr that have no match in table frosted and vice versa. So you need a full outer join, which MySQL doesn't support.

A possible workaround: Get all dates with a union query first, then outer join the tables again.

select 
  alldates.value as "Date",
  coalesce(g.b_qty, '-') as "Inward(B_Qty)",
  coalesce(f.m_qty, '-') as "Outward(B_Qty)"
from
(
  select b_date as value from gr
  where b_name = 'A'
  union 
  select m_date from frosted
  where m_name = 'A'
) all_dates
left join gr g on g.b_date = all_dates.value
               and g.b_name = 'A'
left join frosted f on f.m_date = all_dates.value
                    and f.m_name = 'A'

我尝试过并找到所需的结果:

SELECT table1.bdate as "Date",coalesce(t1.B_Qty,'-') as "Inward(B_Qty)",coalesce(t2.M_Qty,'-') as "Outward(M_Qty)" FROM ( select B_date as bdate,B_Name as bname from gr union select M_Date as mdate,M_Name as mname from frosted) as table1 LEFT JOIN gr as t1 ON t1.B_Date = table1.bdate LEFT JOIN frosted as t2 ON t2.M_Date = table1.bdate WHERE table1.bname like 'A'

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM