Я хочу написать запрос, который даст мне продукт с определенным значением ключа
tbl_product
product_id field_id value
1 1 100
1 2 200
я хочу найти все продукты, которые имеют (field_id = 1 и value = 100) и (field_id = 2 и value = 200)
Вы можете использовать, where
, group by
и having
:
select product_id
from t
where (field_id = 1 and value = 100) or (field_id = 2 and value = 200 )
group by product_id
having count(*) = 2;
Если дубликаты разрешены, то вы хотите count(distinct field_id) = 2
.
Я думаю, вам кажется, что вы хотите:
select t.*
from table t
where exists (select 1
from table
where product_id = t.product_id and (field_id = 1 and value = 100)
) and
exists (select 1
from table
where product_id = t.product_id and (field_id = 2 and value = 200)
);