Помогите разобраться.
Пытаюсь сделать фильтр товаров.
Есть таблица с товарами, назовём её products (Описание товаров)
Есть таблица с характеристиками (фильтрами) params_desc (Описание характеристик)
И есть таблица с сопоставлениями товаров с характеристиками params (Сопоставление)
Предположим есть товар (№1), у которого три характеристики (деревянный, чёрный, круглый)
Есть еще один товар (№2) с тремя характеристиками (каменный, чёрный, квадратный)
Если поставить галочки например чёрный и каменный, то по идее должен вывестись товар №2, так как он каменный и чёрный. Вот как это сделать?
param_id = 1; это чёрный
param_id = 2; это каменный
эти характеристики описаны в таблице params_desc
а в таблице params, сопоставляется id характеристики c id товара. то есть у товара может быть сколько угодно характеристик.
Типа такого запроса не работает (WHERE AND)
SELECT * FROM products pro
LEFT JOIN params par ON par.`product_id` = pro.`id`
LEFT JOIN params_desc pd ON pd.`id` = par.`param_id`
WHERE par.`param_id` = 1 AND par.`param_id` = 2
А такой работает (WHERE OR)
SELECT * FROM products pro
LEFT JOIN params par ON par.`product_id` = pro.`id`
LEFT JOIN params_desc pd ON pd.`id` = par.`param_id`
WHERE par.`param_id` = 1 OR par.`param_id` = 2
Но второй запрос выводит два товара, так как они оба чёрные, а нужен товар который и чёрный и каменный одновременно.

_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2