0

我有具有唯一记录的 DCHDR 表作为 DC_No 字段和 DCDTL,它是一个事务表,它具有不同产品和数量的重复 DC_Nos。

从下面的 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 表的相同记录。请建议。

    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

此查询将为您提供所需的结果 -

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

是你想要的吗?

于 2013-03-11T13:57:40.280 回答
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 回答