我正在尝试返回滞销商品清单。每当有销售时,商品就会写入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()
)
答案 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天内销售表中没有记录。