2014-09-23 124 views
0

我有兩個表那些跟隨排序按日期在SQL

表名:stockIn

+----+-------------+------------+------------+   
| Id | date  | Itemname | stockInqty |  
+====+=============+============+============+ 
| 1 | 12/12/2014 | testitem | 12  | 
| 2 | 14/12/2014 | testitem11 | 20  | 
+----+-------------+------------+------------+ 

表名稱:缺貨

+----+------------+-------------+-------------+ 
| Id | date  | Itemname | stockOutqty | 
+====+============+=============+=============+  
| 1 | 12/12/2014 | testitem | 7   | 
| 2 | 13/12/2014 | testitem11 | 15   | 
+----+------------+-------------+-------------+ 

我需要一個綜合作用的結果兩個日期期間的測試項目記錄的順序爲

+------------+-----------+-------------+-------------+ 
| date  | itemname | stockInqty | stockOutqty | 
+============+===========+=============+=============+  
| 12/12/2014 | testitem | 12   | 7   | 
| 13/12/2014 | testitem | NIL  | 15  | 
| 14/12/2014 | testitem | 20   | NIL  | 
+------------+-----------+-------------+-------------+ 

我得到了這樣的查詢

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 

查詢的結果會是這樣

+-------------+------------+------------+-------------+ 
|date   | itemname | stockInqty | stockOutqty |  
+=============+============+============+=============+  
| 12/12/2014 | testitem |  12 | 7   | 
| 14/12/2014 | testitem |  20 | NIL  |  
| 13/12/2014 | testitem |  NIL | 15  | 
+-------------+------------+------------+-------------+ 

結果拳頭表中的數據的基礎上,有序。

我需要的結果應該以日期爲基礎進行排序(即第一個記錄必須在12/12/2014之上,第二個記錄在13/14/2014第三個在14/12/2014)。

在此先感謝。

+1

添加在按日期遞增 – 2014-09-23 06:12:00

+0

最後爲了你有兩個數據,需要一個進行排序單一輸出 - **不可能,因爲如果您將對第1列進行排序**數據將以此爲基礎進行排序 - 「NIL,12/12,13,12」因此14/12數據將位於第一行。 – Murtaza 2014-09-23 06:40:13

+0

感謝您編輯烏拉斯,這個問題的全部意圖都迷失了... – 2014-09-23 07:00:38

回答

0
select * from 
(
SELECT t1.date as sdate 
    , 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 as sdate 
    , 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 
) t 
order by sdate 
+0

請參閱編輯 – 2014-09-23 06:24:36

0

按日期順序試試這個

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 order by date 
+0

請參閱編輯 – 2014-09-23 06:24:09

0

使用此代碼:

select date,itemname,stockInqty,stockOutqty from(
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) 
order by date