【发布时间】:2019-02-18 17:30:24
【问题描述】:
此查询作为一个整体获取零行。我试过分别运行每个子查询,每个都运行良好。
主表ITEMS 包含库存中的所有项目。表ISSUED 包含已从主存储区发出的item IDs。
我在这个主查询中运行了两个子查询。一个获取库存中在给定日期进入库存但尚未发出的所有项目的计数,另一个获取当天进入库存的所有项目的计数,但是当天发出。
我需要获取按项目名称分组的这两个项目计数的总和。
SELECT ITEMS.ITEM AS ITEM,
( IFNULL(Arr1.TAG_COUNT, 0)
+ IFNULL(Arr2.TAG_COUNT, 0) ) AS TAG_COUNT
FROM ((SELECT ITEMS.ITEM AS ITEM,
Count(ITEMS.ID) AS TAG_COUNT
FROM ITEMS
WHERE ITEMS.DT_ARRIVAL = '2019-01-01'
AND ITEMS.ID NOT IN (SELECT ISSUED.ID
FROM ISSUED)
GROUP BY ITEMS.ITEM) AS Arr1
LEFT JOIN (SELECT ITEMS.ITEM AS ITEM,
Count(ITEMS.ID) AS TAG_COUNT
FROM ITEMS
LEFT JOIN ISSUED
ON ISSUED.ID = ITEMS.ID
WHERE ITEMS.ID IN (SELECT ISSUED.ID
FROM ISSUED)
AND ISSUED.DATE = '2019-01-01'
GROUP BY ITEMS.ITEM) AS Arr2
ON Arr2.ITEM = Arr1.ITEM
LEFT JOIN ITEMS
ON ITEMS.ITEM = Arr1.ITEM)
GROUP BY ITEMS.ITEM
【问题讨论】:
-
每个ITEMS实例有不同的表别名,让代码更清晰。