我在查询中苦苦挣扎,我希望有人可以提供帮助。
我有两张桌子Sale
& SaleLine
与字段SaleUUID
相关,但表格Sale还有OriginalSaleUUID
字段,即父UUID
。
我想要实现的是显示特定销售的物品清单及其数量以及退货数量(可以返回0,这意味着Sale& SaleLine表中没有记录返回或多个退货一个项目和销售)。
我希望这是有道理的。
表销售:
SaleUUID OriginalSaleUUID
1
2 1
3 1
表SaleLine:
SaleLineUUID SaleUUID SaleLineItemName SaleLineQuantity
1 1 Item A 3
2 1 Item B 1
3 2 Item A 1
4 3 Item A 1
预期结果:
Item Name Item Quantity Item Quantity (Return)
Item A 3 2
Item B 1 0
这是最后一次尝试。我今天已经花了几个小时没有一个有效的解决方案:/即使这个没有工作也应该如此。它为两个项目提供了相同的结果,但只有第一个具有回报。
SELECT
SL1.SaleLineItemName,
SL1.SaleLineQuantity,
COALESCE( (
SELECT
(SL2.SaleLineQuantity)
FROM
Sale S2, SaleLine SL2
WHERE
S2.SaleUUID = SL2.SaleUUID
AND S2.OriginalSaleUUID = S1.SaleUUID), 0)
FROM
Sale S1,
SaleLine SL1
WHERE
S1.SaleUUID = SL1.SaleUUID
AND S1.SaleUUID = ?
答案 0 :(得分:0)
SELECT what_you_need, SUM(IF(OriginalSaleUUID IS NULL, SaleLineQuantity, 0)) quantity, SUM(IF(OriginalSaleUUID IS NOT NULL, SaleLineQuantity, 0)) ret
FROM SaleLine
JOIN Sale USING(SaleUUID)
GROUP BY IFNULL(OriginalSaleUUID, SaleUUID), SaleLineItemName
此外,使用JOIN(https://dev.mysql.com/doc/refman/5.7/en/join.html)而不是通过WHERE条件组合两个表。这是"现代"语法。