Shanov_Alexey Шанов

Проверьте запросы SQL.

Сделал оба запроса, вроде правильно, но выдают они разные строки.
Задание:
1.7. Вывести информацию о продукте (ProductID, Name), не находившемся в
производстве в июле 2011 года. Использовать таблицы Production.Product и
Production.WorkOrder. Создать запросы двух типов: с использованием операции вычитания и без неѐ.
Запросы:
1) select distinct
Production.Product.ProductID as ID,
Production.Product.Name
from
Production.Product join Production.WorkOrder
on
(Production.WorkOrder.ProductID = Product.ProductID and not (DATEPART(yy,Production.WorkOrder.StartDate) = 2011 and DATEPART(mm,Production.WorkOrder.StartDate) = 7))

2)select distinct
Production.Product.ProductID,
Product.Name
from
Production.Product, Production.WorkOrder
where
Production.WorkOrder.ProductID = Product.ProductID
except
select distinct
Production.Product.ProductID,
Product.Name
from
Production.Product, Production.WorkOrder
where
Production.WorkOrder.ProductID = Product.ProductID and
DATEPART(mm,WorkOrder.StartDate) = 7 AND
DATEPART(yy,WorkOrder.StartDate) = 2011

ЮО
Юлия Орешина

Запрос без вычитания

SELECT DISTINCT p.ProductID, p.Name
FROM Production.Product AS p
WHERE NOT EXISTS(SELECT wo.ProductID
FROM Production.WorkOrder AS wo
WHERE wo.ProductID = p.ProductID
AND wo.StartDate BETWEEN '2011-07-01' AND '2011-07-31')

или

SELECT DISTINCT p.ProductID, p.Name
FROM Production.Product AS p
LEFT JOIN Production.WorkOrder AS wo
ON wo.ProductID = p.ProductID AND wo.StartDate BETWEEN '2011-07-01' AND '2011-07-31'
WHERE wo.ProductID IS NULL

P.S. Разумеется, это только идея. Конкретный синтаксис зависит от используемой СУБД.

Похожие вопросы
Запросы в SQL для базы данных "sample_db".
SQL-запрос не затрагивает строки
Написать запрос sql
Запросы sql нужна помощь .
Вопрос по запросам SQL
Вопросы по языку SQL (запросы)
Непонятная ошибка в запросе SQL
Помогите написать запрос T-SQL
Как составить SQL запрос?
Помогите разобраться с ошибкой в SQL запросе