Я знаю, что MySQL 5.x не поддерживает INTERSECT, но, похоже, это то, что мне нужно.
Таблица A: Продукты (p_id)
Таблица B: Prod_cats (cat_id) - информация о категории (имя, описание и т. Д.)
Таблица C: prod_2cats (p_id, cat_id) - много ко многим
prod_2cats содержит множество (1 или более) категорий, которые были назначены для Продуктов (A).
Выполнение запроса / фильтра (интерактивно для пользователя) и необходимость выбора среди нескольких категорий продуктов, отвечающих ВСЕМ критериям.
Ex:
- 80 товаров, отнесенных к категории X
- 50 товаров, отнесенных к категории Y
- но только 10 продуктов (пересекаются) назначены ОБА кот X и кот Y
Этот sql работает для одной категории:
ВЫБРАТЬ * ИЗ ПРОДУКТОВ, ГДЕ p_show = 'Y' И p_id IN (ВЫБРАТЬ p_id ОТ prods_2cats
КАК ПК, ГДЕ PC.cat_id = ". $ Cat_id."
<- $ cat_id - очищенная переменная, переданная из формы запроса. </p>
Кажется, я не могу найти способ сказать "дай мне пересечение кота А и кота В" и вернуть подмножество (10 записей, из моего примера)
Помощь!