У меня есть следующее стандартное отношение «многие ко многим»: http://sqlfiddle.com/#!9/43bd68/28/0
(упрощенная версия) – у меня есть продукт 1 с категориями 1, 2 и 3 и продукт 2 с категориями 1 и 3.
Чего я пытаюсь добиться, так это выбрать продукты, принадлежащие к определенной комбинации категорий.
Чтобы проиллюстрировать это:
- Получите продукты, которые относятся к категориям (1 или 2) и относятся к категориям (3). Это должно вернуть оба продукта 1 и 2
- Получите продукты, которые относятся к категориям (2) и относятся к категориям (3). Это должно возвращать только продукт 1
Категории должны вести себя как «фильтры» — поэтому моей первоначальной мыслью было установить WHERE category IN (1, 2) AND category IN (3)
, но это не работает, так как категория представляет собой одно значение для одной строки. Я думаю, мне нужно что-то вроде «для каждого продукта, а затем внутри продукта проверьте, есть ли у него категория (1 или 2) и категория (3)».
Можно ли добиться этого с помощью SQL-запроса?