shop_products
===========
id
name
shop_characteristics
===========
id
values (json)
shop_values
===========
product_id
characteristic_id
value
С фронта получаю данные characteristic_id и value и могу выбрать все товары с этими параметрами через связь таким образом:
Код: Выделить всё
SELECT `p`.* FROM `shop_products` `p`
LEFT JOIN `shop_values` `fv` ON `p`.`id` = `fv`.`product_id`
WHERE ((`fv`.`characteristic_id`=3) AND (`fv`.`value`='уличные'))
Код: Выделить всё
...
WHERE ((`fv`.`characteristic_id`=3) AND (`fv`.`value`='уличные'))
OR ((`fv`.`characteristic_id`=3) AND (`fv`.`value`='внутренние'))
Код: Выделить всё
...
WHERE ((`fv`.`characteristic_id`=3) AND (`fv`.`value`='уличные'))
AND ((`fv`.`characteristic_id`=5) AND (`fv`.`value`='белый'))
Вопрос как правильно написать SQL-запрос или же как тогда спроектировать хранение связей?
Важный момент - условие между группами хар-к должно быть AND, а не OR, иначе множественный выбор будет выбирать все подряд.