我将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表记录。 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 :(得分:1)
为什么在使用UNION
实现此目标时,您需要LEFT and RIGHT JOIN
INNER JOIN
?
SELECT a.DC_DATE, b.*
FROM DCHDR a
INNER JOIN DCDTL b
ON a.DC_Nos = b.DC_Nos
要进一步了解联接,请访问以下链接:
答案 1 :(得分:1)
此查询将为您提供所需的结果 -
SELECT * FROM dchdr
LEFT JOIN dcdtl -- or maybe INNER JOIN
ON dchdr.DC_Nos = dcdtl.DC_Nos
这是你想要的吗?