У меня есть таблица, например, так:
Я хочу получить разные id_products, где id_feature_value = 60 и id_feature_value = 40 Это просто пример, потому что мне понадобится фильтр по большему количеству feature_values.
О скольких feature_value
ценностях вы говорите?
либо используя отдельные и в :
select distinct id_products
from tablename
where id_feature_value IN ( 40, 60 , ...)
или сгруппировать по
select id_products
from tablename
where id_feature_value IN ( 40, 60 , ...)
group by id_products
Если вам нужны продукты, обладающие обеими функциями, вы можете использовать group by
и having
:
select id_product
from mytable
where id_feature_value in (40, 60)
group by id_product
having count(*) = 2
Это предполагает отсутствие дубликатов. В противном случае вам нужно count(distinct id_feature_value) = 2
.
Вы можете легко расширить это, чтобы обрабатывать больше функций для каждого продукта: вам просто нужно расширить предложение in
и соответствующим образом изменить буквальное число в предложении having
.
SELECT DISTINCT id_products WHERE id_feature_value=60 AND id_feature_value=40
. Но это не приведет к результату, потому что вы должны были сказатьor
, а неand
. 😉