У меня есть три таблицы
Products (idProduct, name)
Invoices(typeinvoice, numberinvoice, date)
Item-invoices(typeinvoice, numberinvoice, idProduct)
Мой запрос должен выбрать все продукты, не проданные в 2019 году. Я могу использовать функцию для получения года по дате, например, год (i. свидание). Я знаю, что товары, которые не отображаются в таблице Товар-счет, являются непроданными. Поэтому я попытался с этими двумя кодами и получить хороший вывод.
SELECT p.name
FROM Products p
EXECPT
SELECT ii.idProduct
FROM Item-invoices ii, Invoices i
WHERE ii.typeinvoice=i.typeinvoice
AND ii.numberinvoice=i.numberinvocice
AND year(i.date)=2019
А другой код использует подзапрос:
SELECT p.name
FROM Products p
WHERE p.idProduct NOT IN
(SELECT ii.idProduct
FROM Item-invoices ii, Invoices i
WHERE ii.typeinvoice=i.typeinvoice
AND ii.numberinvoice=i.numberinvocice
AND year(i.date)=2019)
Ответ заключается в том, как я могу использовать левую команду соединения, чтобы получить тот же вывод. Я пытался с
SELECT p.name
FROM Products p
LEFT JOIN Item-invoices ii ON
p.IdProduct=ii.idProduct
LEFT JOIN Invoices i ON
ii.typeinvoice=i.typeinvoice
AND ii.numberinvoice=i.numberinvocice
WHERE year(i.date)=2019
AND ii.idProduct IS NULL
Я знаю, что это неправильно, но не могу найти решение
Любая помощь?