滞销库存项目查询

时间:2019-09-19 14:13:48

标签: mysql sql

我正在尝试返回滞销商品清单。每当有销售时,商品就会写入saleItems表。我想从过去N天内未出现在saleItems表中的清单主表中获得那些项目。这是我的结构。

db_inventory - all inventory items are stored here in stockmain table
db_main - all sale transactions recorded here in saleitems table

下面是给我一个错误的查询

SELECT db_inventory.StockMain.ItemCode 
FROM 
db_inventory.StockMain
JOIN 
db_main.SaleItems 
ON 
db_main.SaleItems.ItemID=db_inventory.StockMain.ItemCode
WHERE NOT IN(
   SELECT db_main.SaleItems.ItemID FROM db_main.SaleItems 
   WHERE db_main.SaleItems.saledate BETWEEN 
   DATE_SUB(CURDATE(),INTERVAL 90 DAY) AND NOW()
)

1 个答案:

答案 0 :(得分:2)

NOT EXISTS与相关的子查询一起使用。

SELECT ItemCode 
FROM db_inventory.StockMain i
WHERE NOT EXISTS (
    SELECT 1
    FROM db_main.SaleItems m
    WHERE m.ItemID = i.ItemID AND m.saledate > NOW() - INTERVAL 90 DAY
)

子查询可确保对于库存中的给定项目,过去90天内销售表中没有记录。