qnixnet
@qnixnet
PHP Trainee

Как сформировать правильно sql запрос?

Есть поставленная задача из ресурса w3schools
Выбрать все коды клиентов - CustomerID, сделавших заказ в 1996 году, но не сделавших в 1997 году. (результат 40 записей)

Я никак не могу к ней подступится, просьба подсказать в какую сторону 'копать' что бы ее решить.
  • Вопрос задан
  • 124 просмотра
Решения вопроса 3
twobomb
@twobomb
SELECT DISTINCT c.CustomerID FROM Customers as c   JOIN Orders as o ON c.CustomerID=o.CustomerID WHERE OrderDate BETWEEN '1996-01-01' AND '1996-12-31' AND (SELECT COUNT(*) FROM Orders as o1 WHERE o1.CustomerID = c.CustomerID AND OrderDate BETWEEN '1997-01-01' AND '1997-12-31') = 0
Ответ написан
ThunderCat
@ThunderCat
{PHP, MySql, HTML, JS, CSS} developer
да в лоб просто:
селект
где год = 1996
и кастомерид нот ин (
селект
где год = 1997
)
Ответ написан
rozhnev
@rozhnev
Fullstack programmer, DBA, медленно, дорого
Переводим задачу на английский и плучаем следующий запрос:
SELECT * 
FROM Customers
WHERE EXISTS (
	SELECT * FROM Orders WHERE Orders.CustomerId = Customers.CustomerID AND YEAR(Orders.OrderDate) = 1996
) AND NOT EXISTS (
	SELECT * FROM Orders WHERE Orders.CustomerId = Customers.CustomerID AND YEAR(Orders.OrderDate) = 1997
)
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
yupiter7575
@yupiter7575
Python программист
SELECT Customerid FROM table WHERE year=1996
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы