Медленно движущиеся акции - PullRequest
       3

Медленно движущиеся акции

0 голосов
/ 19 сентября 2019

Я пытаюсь вернуть список медленно движущихся товаров.Всякий раз, когда происходит продажа, элементы записываются в таблицу saleItems.Я хочу получить те предметы из таблицы inventoryMaster, которые не появлялись в таблице saleItems в течение последних N дней.Вот моя структура.

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 Ответ

2 голосов
/ 19 сентября 2019

Используйте 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 дней.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...