我有一个具有以下表的MySQL数据库:
产品:
Product_ID | Product_Name
1 | Blaster
2 | Faser
3 | BFG
订单:
Order_ID | Product_ID | Order_Product_Qnt
1 | 1 | 10
2 | 2 | 5
3 | 3 | 7
4 | 2 | 10
卖:
Sell_ID | Product_ID | Sel_Product_Qnt
1 | 2 | 5
2 | 1 | 1
3 | 3 | 2
我想做的是一个查询,其中列出了所有产品及其数量。
结果应为:
Product_Name | Quantity
BFG | 5
Blaster | 9
Faser | 10
遵循Barnar的建议,我得到了以下代码:
SELECT
Products.Product_Name,
COALESCE (SUM(Orders.Order_Product_Qnt), 0) - COALESCE (SUM(Sells.Sells_Product_Qnt), 0) AS Quantity
FROM
Products
LEFT JOIN
Orders ON Products.Product_ID = Orders.Product_ID
LEFT JOIN
Sells ON Products.Product_ID = Sells.Product_ID
GROUP BY
Products.Product_Name
该查询有效,但返回错误值。
例如,我有一个产品有6个订单,有1个卖出,逻辑表明6-1 = 5,但是该查询给了我4个结果。
或另外一个有18个订单和6个卖出的订单,则返回60(应为12)。
任何建议表示赞赏。
终于成功了,忘了在这里发布我的解决方案:
SELECT
Products.Product_ID,
Products.Product_Name,
IFNULL(b.SB - c.SC, 0) AS Quantity,
FROM Produtos_Table
LEFT JOIN (
SELECT
Product_ID,
SUM(Quantity) AS SB
FROM
Orders
GROUP BY Product_ID
) b
ON Products.Product_ID = b.Product_ID
LEFT JOIN (
SELECT
Product_ID,
SUM(Sell_Product_Qnt) AS SC
FROM
Sells
GROUP BY
Product_ID
) c
ON Products.Product_ID = c.Product_ID
GROUP BY
Products.Product_Name
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句