La primera consulta podría ser algo así, pero desde luego es bastante grande.
La idea es que realizas dos subconsultas: en la primera tomas los clientes que han comprado de la categoria beverages y en la segunda, los clientes que han comprado de la categoría condiments y luego realizas una resta (EXCEPT) para quedarte con los que han comprado beverages pero no condiments.
Código SQL:
Ver originalSELECT DISTINCT CompanyName, categoryName, ContactName
FROM Categories INNER JOIN
Products ON Categories.CategoryID = Products.CategoryID INNER JOIN
[ORDER Details] ON Products.ProductID = [ORDER Details].ProductID INNER JOIN
Orders ON [ORDER Details].OrderID = Orders.OrderID INNER JOIN
Customers ON Orders.CustomerID = Customers.CustomerID
WHERE categoryname = 'beverages'
EXCEPT
SELECT DISTINCT ContactName
FROM Categories INNER JOIN
Products ON Categories.CategoryID = Products.CategoryID INNER JOIN
[ORDER Details] ON Products.ProductID = [ORDER Details].ProductID INNER JOIN
Orders ON [ORDER Details].OrderID = Orders.OrderID INNER JOIN
Customers ON Orders.CustomerID = Customers.CustomerID
WHERE categoryname = 'condiments'
La segunda consulta sería igual pero usando INTERSECT en vez de EXCEPT