Дайте имя покупателям, которые купили ВСЕ товары по цене менее 5 - PullRequest
0 голосов
/ 24 апреля 2019

Я хочу написать запрос, в котором будут указаны имена только тех покупателей, которые купили все товары, цена которых меньше 5. В то время как мой запрос дает всем клиентам, которые купили хотя бы один товар, цена которого меньше 5.

SELECT Customers.CompanyName AS Customers
FROM Customers
INNER JOIN Orders
ON Orders.CustomerID = Customers.CustomerID
JOIN [Order Details]
ON [Order Details].OrderID = Orders.OrderID
JOIN Products
ON Products.ProductID = [Order Details].ProductID
WHERE [Order Details].ProductID  IN (
  SELECT Products.ProductID FROM Products WHERE Products.UnitPrice < 5
)

1 Ответ

0 голосов
/ 24 апреля 2019

Вы можете попробовать следующее:

SELECT Customers.CompanyName AS Customers
FROM Customers
INNER JOIN Orders
ON Orders.CustomerID = Customers.CustomerID
JOIN [Order Details]
ON [Order Details].OrderID = Orders.OrderID
JOIN Products
ON Products.ProductID = [Order Details].ProductID
WHERE [Order Details].ProductID  IN (
  SELECT Products.ProductID FROM Products WHERE Products.UnitPrice < 5)
GROUP BY CompanyName 
HAVING COUNT([Order Details].ProductID) = (SELECT Count(Products.ProductID) FROM Products WHERE Products.UnitPrice < 5)

Я включил пункт GROUP BY и пункт «Имея», чтобы вы могли получить только клиентов, которые купили все продукты с ценой за единицу менее 5

...