Есть такая таблица. Как сделать запрос, чтобы выбрать те product_id у которых в value_option_id обязательно присутствие всех трёх значений 9 и 17 и 1, то есть по данной таблице на выходе должно получиться 7 и 5
чтобы остались поля с id 3,4,5 9,10,11 а 12, 13 отсеялись
SELECT *
FROM table
WHERE product_id IN
(
SELECT product_id
FROM table
GROUP BY product_id
HAVING 3 = SUM(value_option_id IN (1, 9, 17))
)
/* WHERE value_option_id IN (1, 9, 17) */
Запрос предполагает, что (product_id, value_option_id) UNIQUE.
выбрать те product_id у которых value_option_id обязательно должны иметь в опциях и 9 и 17 и 1
SELECT product_id
FROM table
GROUP BY product_id
HAVING 3 = SUM(value_option_id IN (1, 9, 17))
select tabl.product_id as product id from tabl where tabl.value_option_id IN (1, 9, 17);
Желателен индекс по полю value_option_id
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости