Редакция SQL- запроса( JOIN, WHERE, GROUP BY,)

Определить, какие товары имеются в таблице Goods, но не покупались в течение 2005 года

Поля в результирующей таблице: good_name

ВОТ ССЫЛКА НА ЗАД

Этот код выдает правильный результат запроса,НО!!!! Я НЕ ЗАТРАГИВАЮ 2005 ГОД,КУДА МНЕ НАДО ЭТО YEAR(Payments.date) = 2005 ДОБАВИТЬ?
Пыталась добавить WHERE Payments.good IS NULL AND YEAR(Payments.date) = 2005 - ВЫДАЕТ ОШИБКУ.


Ответы (2 шт):

Автор решения: Aziz Umarov

Вот решение

SELECT good_name FROM Goods                                                        
LEFT JOIN Payments ON 
 Goods.good_id = Payments.good
 AND YEAR(Payments.date) = 2005
WHERE  Payments.good IS NULL
GROUP BY 
 good_id;

да конечно пока на данные не посмотришь не определишь вот так вот сходу

→ Ссылка
Автор решения: Dmitri F.

Другое решение

SELECT good_name FROM Goods
WHERE NOT EXISTS (SELECT good FROM Payments 
WHERE good = good_id AND YEAR(date) = '2005')
→ Ссылка