2014-09-22 16 views
0

我有兩個表:查詢用於合併兩個表中的數據

stock in

Id---date---Itemname----stockInqty 

1 --12/12/2014 ----testitem----12 

2 --13/12/2014 ----testitem11----20 

stock out

Id--date--Itemname---stockOutqty 

1 --12/12/2014 ----testitem----7 

2 --14/12/2014 ----testitem11----15 

我需要的testitem記錄之間的兩個日期週期的組合的結果的順序的

date----itemname----stockInqty----stockOutqty 

12/12/2014--testitem---12----7 

13/12/2014--testitem---20----Nil 

13/12/2014--testitem---NIL----15 

回答

3

你可以使用FULL JOIN如果不是MySQL的,所以你應該使用LEFT/RIGHT JOINUNION

SELECT t1.`date` 
    , t1.itemname 
    , t1.stockInqty AS stockInqty 
    , t2.stockInqty AS stockOutqty 
FROM tbl1 t1 LEFT JOIN tbl2 t2 ON t1.`date` = t2.`date` 
           AND t1.itemname = t2.itemname 
UNION 

SELECT t2.`date` 
    , t2.itemname 
    , t1.stockInqty AS stockInqty 
    , t2.stockInqty AS stockOutqty 
FROM tbl1 t1 RIGHT JOIN tbl2 t2 ON t1.`date` = t2.`date` 
           AND t1.itemname = t2.itemname 
+0

感謝您的回覆......我們如何按日期順序創建記錄(現在是根據第一個表「tbl1」命令)。 – 2014-09-23 05:53:13

+0

@John Mathew:你可以從上面的臨時表中選擇,然後選擇'ORDER BY'日期。 – potashin 2014-09-23 07:57:24

0

試試這個:

SELECT * 
FROM StockA 
LEFT OUTER JOIN StockB 
ON StockA.dataItem = StockB.dataItem 
UNION 
SELECT * 
FROM StockB 
LEFT OUTER JOIN StockA 
ON StockA.dataItem = StockB.dataItem 

必須使用FULL OUTER JOIN操作

在MySQL FULL OUTER JOIN可以模擬兩個LEFT OUTER JOIN in UNION