我有两个表: 1.物料,字段: Material have,Material have,Material group 2. ProductionOrder,字段:Material have,qty,orderdate我要取的日期,按物料组分组。因此,我使用以下查询:
SELECT Material.materialgroup, ProductionOrder.qty
FROM ProductionOrder LEFT OUTER JOIN Material
ON ProductionOrder.materialcode=Material.materialcode
WHERE ProductionOrder.orderdate='2013-11-30'
GROUP BY Material.materialgroup
ORDER BY Material.materialgroup
但是结果是不正确的。它接受所有具有materialgroup null的materialcode。注意: ProductionOrder中有一些物料在表物料中没有物料组。结果,有时是正确的,有时是否定的。
谁来帮帮忙。谢谢。
LVD
发布于 2013-12-03 06:50:21
如果您使用LEFT INNER JOIN或仅使用JOIN,它应该可以工作。
发布于 2013-12-03 06:53:35
LEFT JOIN
将为您提供来自ProductionOrder的所有行以及来自Material的匹配行
SELECT Material.materialgroup, ProductionOrder.qty
FROM ProductionOrder LEFT OUTER JOIN Material
ON ProductionOrder.materialcode=Material.materialcode
WHERE ProductionOrder.orderdate='2013-11-30'
GROUP BY Material.materialgroup
ORDER BY Material.materialgroup
要只从两个表中获取匹配的行,可以尝试使用INNER JOIN
SELECT Material.materialgroup, ProductionOrder.qty
FROM ProductionOrder INNER JOIN Material
ON ProductionOrder.materialcode=Material.materialcode
WHERE ProductionOrder.orderdate='2013-11-30'
GROUP BY Material.materialgroup
ORDER BY Material.materialgroup
如果你想从Material获得所有行,只想从ProductionOrder获得匹配的行,你可以像这样使用RIGHT JOIN
...
SELECT Material.materialgroup, ProductionOrder.qty
FROM ProductionOrder RIGHT JOIN Material
ON ProductionOrder.materialcode=Material.materialcode
WHERE ProductionOrder.orderdate='2013-11-30'
GROUP BY Material.materialgroup
ORDER BY Material.materialgroup
https://stackoverflow.com/questions/20339427
复制相似问题