MySQL多个左连接组

时间:2011-09-02 03:33:47

标签: mysql select group-by sum left-join

这个MySQL代码有问题。 似乎应该有更多的股票回报。

表位持有库存(多个仓位一个产品) table orderbody持有订单订购的产品(1个订单到多个订单)

SELECT PRO.ProductID, 
       PRO.ProductCode, 
       SUM( POS.Qty ) AS instock, 
       SUM( OB.Qty ) AS onorder
FROM products AS PRO
LEFT JOIN position AS POS ON POS.ProductID = PRO.ProductID
LEFT JOIN orderbody AS OB ON OB.ProductID = PRO.ProductID
WHERE POS.ProductID = OB.ProductID
GROUP BY PRO.ProductID, POS.ProductID, OB.ProductID
  • 我正在获得instock 320
  • 实际库存量= 40
  • 职位数量= 2(每个数量20)

  • onorder = 16 qty

  • orderbody的实际数量= 8行
  • 实际上是在订单= 8(每个都有qty = 1)

这是其中一个产品

我知道这与小组有关,但是我无法解决这个问题。

感谢收到的任何帮助。

2 个答案:

答案 0 :(得分:0)

你正在选择这个字段PRO.ProductCode,但不是按它分组,猜测可能是问题。

答案 1 :(得分:0)

前几天我遇到了同样的问题。通过从单独的查询中选择来尝试:SELECT ... FROM products,(SELECT ...)...“您要将两个表连接起来。尝试首先测试子查询,然后尝试一旦它工作就把它放在一起。(一旦你有你想要的数据,而不是重复,因为这是你的问题。