Задача: Вывести товары, которые НЕ продавались в данном промежутке времени
Одним способом задача решена. Но хочется также решить только с помощью JOIN.
SELECT pr.product_id, pr.product_name, o.order_date
FROM products AS pr
JOIN order_details AS od ON pr.product_id = od.product_id
JOIN orders AS o ON od.order_id = o.order_id
WHERE o.order_date BETWEEN '1997-02-01' AND '1997-02-15'
ORDER BY pr.product_id
В результате выводит товары, которые ПРОДАВАЛИСЬ, а нужно НЕ продавались. Помогите плз.
Ответы (2 шт):
Автор решения: Aziz Umarov
→ Ссылка
Как-то так
SELECT distinct pr.product_id, pr.product_name
FROM products AS pr
JOIN order_details AS od ON pr.product_id = od.product_id
LEFT JOIN orders AS o ON od.order_id = o.order_id
AND o.order_date BETWEEN '1997-02-01' AND '1997-02-15'
WHERE o.order_id IS NULL
ORDER BY pr.product_id
Автор решения: Akina
→ Ссылка
SELECT product_id, product_name
FROM products
EXCEPT
SELECT pr.product_id, pr.product_name
FROM products AS pr
JOIN order_details AS od ON pr.product_id = od.product_id
JOIN orders AS o ON od.order_id = o.order_id
WHERE o.order_date BETWEEN '1997-02-01' AND '1997-02-15'
