В этой базе данных Я хочу подсчитать количество заказов, которые содержат только товары определенной категории.
Я знаю, как подсчитать все заказы, которые также содержат товары определенной категории, то есть категории 1:
SELECT Count(DISTINCT orderdetails.orderid) AS "AllCat1"
FROM orderdetails
INNER JOIN orders
ON orderdetails.orderid = orders.orderid
AND orderdetails.productid IN (SELECT DISTINCT productid
FROM products
WHERE categoryid = 1)
WHERE orderdate BETWEEN "1996-12-01" AND "1996-12-31";
У меня не получается найти элегантный способ получить все заказы, содержащие толькопредметы категории 1.Я попытался выбрать все OrderID и сгруппировать их по OrderID AND CategoryID:
SELECT *
FROM orderdetails
INNER JOIN orders
ON orderdetails.orderid = orders.orderid
AND orderdate BETWEEN "1996-12-01" AND "1996-12-31"
INNER JOIN products
ON orderdetails.productid = products.productid
GROUP BY orderdetails.orderid,
categoryid;
Но я не знаю, как подсчитать все OrderID, которые содержат исключительно элементы категории 1.Правильный ли мой подход?Или есть лучший способ сделать это (который, я уверен, есть)