2013-03-11 66 views
0

我有唯一記錄爲DC_No字段的DCHDR表和 DCDTL它是一個事務表,它將具有不同產品和數量的重複DC_Nos。重複記錄需要MYSQL UNION

從下面的MYSQL線,我能加入,工會2個表和結果是按我的要求只有在DCDTL重複的記錄是不相同的,

即下面的示例記錄是DCDTL只1顯示,第二條記錄不顯示。

實施例:在DCDTL字段和數據 -

DC_Nos, Product_Desc, Nos, Qty 
111  Oxygen 99.99, 4, 10 
111  Oxygen 99.99, 4, 10 

我知道UNIQUE將刪除重複在表中,但沒有任何其他的方式來顯示DCDTL表的甚至是相同的記錄。 Pl建議。

SELECT DC_No, DC_date, T.DC_Nos, T.Product_Desc, T.Nos, T.Qty 
    FROM DCHDR AS H 
    LEFT JOIN DCDTL AS T ON H.DC_No = T.DC_Nos 
    UNION 
    SELECT DC_No, DC_date, T.DC_Nos, T.Product_Desc, T.Nos, T.Qty 
    FROM DCHDR AS H 
    RIGHT JOIN DCDTL AS T ON H.DC_No = T.DC_Nos 

下面是兩個表和期望的結果的採樣數據:

DCHDR表:

DC_date  DC_Nos 
2013-01-01 111 
2013-01-02 112 
2013-01-03 113 

DCDTL表:需要

DC_Nos, Product_Desc, Nos, Qty 
111  Oxygen 99.99, 4, 10 
111  Oxygen 99.99, 4, 10 
111  Nitrogen,  9, 14 
112  Nitrogen,  8, 29 
113  Zero Air,  4, 15 

結果:

DC_date  DC_Nos Product_Desc, Nos, Qty 
2013-01-01 111  Oxygen 99.99, 4, 10 
2013-01-01 111  Oxygen 99.99, 4, 10 
2013-01-01 111  Nitrogen,  9, 14 
2013-01-02 112  Nitrogen,  8, 29 
2013-01-03 113  Zero Air,  4, 15 
+0

你可以給樣品記錄以期望的結果嗎? – 2013-03-11 13:30:13

+0

@JW。編輯後我無法得到標籤,請諒解,但最後要提到的結果。 – 2013-03-11 13:41:15

回答

1

爲什麼你需要有UNIONLEFT and RIGHT JOIN當這可以通過使用INNER JOIN來實現?

SELECT a.DC_DATE, b.* 
FROM DCHDR a 
     INNER JOIN DCDTL b 
      ON a.DC_Nos = b.DC_Nos 

爲了進一步獲得更多的知識有關加入,請訪問以下鏈接:

+0

我甚至嘗試過UNION ALL,它沒有給出我想要的結果,它創造的數字幾乎是DCDTL中存在的記錄的兩倍。目前DCDTL中有530條記錄,在添加'ALL'後,結果爲1060 – 2013-03-11 13:29:42

+2

爲什麼您需要使用'UNION'? – 2013-03-11 13:56:33

+0

@JW我想知道同樣的事情。我有一種感覺,上面的示例數據不足以讓我們理解OP在此嘗試完成的任務。 – 2013-03-11 14:03:00

1

該查詢會給你想要的結果 -

SELECT * FROM dchdr 
    LEFT JOIN dcdtl -- or maybe INNER JOIN 
    ON dchdr.DC_Nos = dcdtl.DC_Nos 

是你想要的嗎?