我如何进行这样的MySQL查询?

时间:2017-04-09 12:35:20

标签: mysql sql

我在查询中苦苦挣扎,我希望有人可以提供帮助。

我有两张桌子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 = ?

1 个答案:

答案 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条件组合两个表。这是"现代"语法。