С учетом таблицы SQL, связанной с заказами и продуктами.SQL Выбор точных совпадений от многих до многих Таблица
CREATE TABLE Order_Product(
unid INT NOT NULL AUTO_INCREMENT,
order_id INT NOT NULL,
product_id INT NOT NULL,
PRIMARY KEY (product_id)
)ENGINE=InnoDb AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
Как решить, присутствует ли в базе данных Поручение с определенным списком продукции (только указанные продукты, не более или менее)? Мой текущий SQL-запрос объединяет две таблицы, первую таблицу для проверки того, какие Заказы содержат продукты (например, 34,48), а второй - поиск того, не содержит ли Заказ больше продуктов.
SELECT *
FROM ( SELECT COUNT(op.order_id) hits, op.order_id
FROM Order_Product op
WHERE op.product_id IN (34,48)
GROUP BY op.order_id
HAVING COUNT(op.order_id) = 2
) AS tabone
JOIN (SELECT COUNT(op.order_id) total, op.order_id
FROM Order_Product op
GROUP BY op.order_id
) AS tabtwo
ON tabtwo.order_id = tabone.order_id
WHERE hits = total
Можете ли вы представить себе более простой способ достичь этого?