это пример таблицы свойств продукта
product_id property_id property_value
5 1 white
5 2 50
5 3 50
5 4 55
5 5 mm
6 8 cm
Я хочу динамически фильтровать свои продукты. например:
select property_id 1 and property_value white
AND
select property_id 2 and property_value 50
AND
select property_id 4 and property_value 55
AND
etc ...
Я могу сделать динамический запрос из базового запроса. когда я использую все условия вместе, никакая запись не сопоставляется, потому что все условия оператора AND. Каков наилучший запрос? спасибо за ваши ответы.
Похоже, вы используете неправильное ключевое слово. Используйте OR
вместо AND
между наборами критериев:
SELECT DISTINCT product_id
FROM product_properties
WHERE
(property_id = 1 and property_value = 'white')
OR
(property_id = 2 and property_value = '50')
OR
(property_id = 4 and property_value = '55')
OR
etc ...
Вы можете использовать DISTINCT
если вы хотите, чтобы один из каждого product_id
соответствовал различным критериям или оставил его, чтобы получить один для каждой строки, которая соответствует.
property_id=1 and property_value='white'
и так далее.