mySQL запрос фильтрации по параметрам, исключающий неполные совпадения

Нужно отобрать продукты, которые имеют все заданные параметры. 33 и 13.

SELECT * FROM product_options WHERE option_id IN (33,13)

таблица

Вышеуказанный запрос выдаёт продукты которые хотя бы по одному параметру совпадают с запросом (что логично). Всем параметрам соответствует только продукт с id = 11.


Ответы (2 шт):

Автор решения: Akina

Обычное реляционное деление.

SELECT product_id 
FROM product_options 
WHERE option_id IN (33,13)
GROUP BY product_id 
HAVING COUNT(DISTINCT option_id) = 2
→ Ссылка
Автор решения: Slava Rozhnev

Ниже еще один запрос JOIN:

SELECT product_id
FROM product_options po1
JOIN product_options po2 USING (product_id)
WHERE po1.option_id = 13 AND po2.option_id = 33;

MySQL fiddle

+============+
| product_id |
+============+
| 11         |
+------------+
→ Ссылка