Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Определить группы товаров, которые не приобретались в 2005 году

Николай Афанасьев Ученик (246), на голосовании 3 года назад
Https://sql-academy.org/ru/trainer/tasks/26 Должно остаться equipment

SELECT DISTINCT good_type_name FROM GoodTypes
JOIN Goods
ON GoodTypes.good_type_id = Goods.type

LEFT JOIN Payments ON

Goods.good_id = Payments.good

AND YEAR(Payments.date) = 2005

WHERE Payments.good IS NULL

;
Голосование за лучший ответ
H-p A Просветленный (47008) 3 года назад
И так понятно какие. Айфоны.
Konstantin Titarenko Ученик (120) 3 года назад
Коряво сформулированное условие задачи ввело Николая в заблуждение. Он написал запрос, подразумевая "товары, которые не приобретались", правильно же будет читать "группы товаров целиком, которые не приобретались". Чтобы получить "equipment", подойдет, например такой запрос:

SELECT good_type_name
FROM GoodTypes
WHERE good_type_id NOT IN (
SELECT good_type_id
FROM Goods
JOIN Payments ON good_id = good AND YEAR(date) = 2005
JOIN GoodTypes ON good_type_id = type
)
Konstantin TitarenkoУченик (120) 3 года назад
Более того, поскольку система не анализирует SQL, она посчитает правильным и такой запрос
SELECT 'equipment' as good_type_name FROM DUAL
:)
Andrey Ученик (223) 3 года назад
SELECT good_name
FROM Goods
WHERE good_id not in
(SELECT good from Payments WHERE YEAR(date) = 2005);
Антон ОрловЗнаток (275) 3 года назад
неверный ответ
Антон Беляев Ученик (214) 3 года назад
Konstantin Titarenko - прав нужно найти группы товаров которые ВООБЩЕ не покупались (год в условии 2005 не играет роли только путает)

SELECT good_type_name FROM GoodTypes
WHERE GoodTypes.good_type_id NOT IN
(SELECT Goods.type FROM Goods
JOIN Payments on Goods.good_id=Payments.good)
Похожие вопросы