库存系统 - SQL不显示缺货商品

时间:2013-08-10 17:26:56

标签: mysql sql

我有一张stock_item表,其中包含已经进入我的库存系统的所有库存。

每个库存商品可以处于多种状态之一,例如: 0 (not_yet_allocated), 1 (已分配), 3 (已退回) )......等等。

我正在尝试创建一个通知系统,当我针对特定股票类型的库存不足时,会通知我。

这是我到目前为止的SQL,

SELECT name, status, count(id) AS count
FROM stock_item 
WHERE status IN (0,3) /* Items that are not yet allocated (0), or items that have been returned (3) */
GROUP BY name, status
ORDER BY count ASC;

上面的SQL工作正常,唯一的问题是如果不满足WHERE子句它不显示库存类型,换句话说,即使某个类型没有“库存”项,我仍然需要返回的类型为0。

1 个答案:

答案 0 :(得分:2)

您需要条件聚合才能查看所有项目:

SELECT name, status, sum(case when status IN (0,3) then 1 else 0 end) AS count
FROM stock_item 
GROUP BY si.name, si.status
ORDER BY count ASC;