Поиск всех заказов, у которых не было хотя бы одного предмета с пометкой - PullRequest
0 голосов
/ 23 сентября 2018

Мне нужно использовать подзапрос, чтобы найти все заказы, в которых не было хотя бы одного элемента в кондитерских изделиях.У меня трудные времена с подзапросами, поэтому любая помощь будет оценена.Это то, что я имею до сих пор.

SELECT O.orderid, O.orderdate, C.custid, C.companyname
FROM Sales.Orders AS O JOIN Sales.Customers AS C ON O.custid = C.custid
JOIN Sales.OrderDetails AS D ON D.orderid = O.orderid
JOIN Production.Products AS P ON P.productid = D.productid
WHERE EXISTS
 (SELECT P.productid FROM Production.Products AS P JOIN 
Production.Categories AS CA
        ON P.categoryid = CA.categoryid JOIN Sales.OrderDetails AS D ON 
        D.orderid = O.orderid
        WHERE CA.categoryname NOT LIKE '%Confections%')

1 Ответ

0 голосов
/ 24 сентября 2018

Вы можете просто использовать LEFT JOIN и WHERE:

SELECT O.orderid, O.orderdate, C.custid, C.companyname
FROM Sales.Orders O JOIN
     Sales.Customers C
     ON O.custid = C.custid JOIN
     Sales.OrderDetails D 
     ON D.orderid = O.orderid JOIN
     Production.Products P
     ON P.productid = D.productid LEFT JOIN
     Production.Categories CA
     ON P.categoryid = CA.categoryid AND 
        CA.categoryname LIKE '%Confections%'
WHERE CA.CatgoryId IS NULL;

В этой версии предполагается, что во всех заказах есть хотя бы один продукт.Это кажется разумным предположением.Запрос легко корректируется для заказов, у которых нет товаров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...