0

DC_Noフィールドとして一意のレコードを持つDCHDRテーブルと、トランザクションテーブルであるDCDTLがあります。これは、異なる製品と数量で重複するDC_Noを持ちます。

以下のMYSQL行から、2つのテーブルを結合して結合することができ、結果は、DCDTLの重複レコードが同一でない場合にのみ、私の要件に従っています。

つまり、以下の例のレコードはDCDTLにあり、1つだけが表示され、2番目のレコードは表示されません。

例: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
4

2 に答える 2

1

これを使用してこれを達成できるUNIONのはなぜですか?LEFT and RIGHT JOININNER JOIN

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

結合についてさらに知識を深めるには、以下のリンクにアクセスしてください。

于 2013-03-11T13:21:27.597 に答える
1

このクエリはあなたに望ましい結果を与えるでしょう-

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

それはあなたが望むものですか?

于 2013-03-11T13:57:40.280 に答える