Я пытаюсь получить Предметы, которые были проданы до определенной даты, плюс Предметы, которые никогда не продаются.
Итак, используя приведенные ниже запросы, я получаю Предметы, которые были проданы до определенной даты, но я не получаю Предметы, которые былиникогда не продается.
Когда я по отдельности выполняю NOT IN
и NOT EXIST
Запросы, я получаю в результате элементы, которых нет в таблице ItemsSold
.Что здесь не так?
Полный запрос с NOT EXISTS
select MAx(ITM.Name) as Name,Max(ITM.ItemID) as ID,Max(ItemsSold.UpdatedDate) as LastSaleDate from Items ITM
Inner join ItemsSold on ItemsSold.ItemID = ITM.ItemID
where convert(varchar,ItemsSold.UpdatedDate,111) < '2019/04/01'
or NOT EXISTS (select ItemsSold.ItemID from ItemsSold where ItemsSold.ItemID=ITM.ItemID)
Group by ITM.ItemID order by ITM.ItemID;
Полный запрос с NOT IN
select MAx(ITM.Name) as Name,Max(ITM.ItemID) as ID,Max(ItemsSold.UpdatedDate) as LastSaleDate from Items ITM
Inner join ItemsSold on ItemsSold.ItemID = ITM.ItemID
where convert(varchar,ItemsSold.UpdatedDate,111) < '2019/04/01'
or ITM.ItemID NOT IN (select ItemsSold.ItemID from ItemsSold)
Group by ITM.ItemID order by ITM.ItemID
NOTIN отдельно
select Items.Name,Items.ItemID from Items where Items.ItemID NOT IN (select ItemsSold.ItemID from ItemsSold) order by ItemID
Выполнение NOT IN и NOT EXISTS Query отдельно возвращает действительные правильные данные, но при полном запросе это не так.