Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Есть таблица продуктов, есть таблица параметров, есть таблица продукт_параметр.
Херня получается у меня, когда я хочу отобрать продукты, совпадающие с тремя параметрами сразу.
Скажем, синий и детский и спортивный
Как такое решается?
Есть мысль сделать с помощью
select count(products.id) as count...
join ... join ...
where (parameters.id = 1 or parameters.id = 2 or parameters.id = 3)
group by products.id ...
having count=3
(т.е. по трём параметрам совпадает)
Или существует более изящное решение?
Не в сети
Меня на собеседовании (Laravel разраб) недавно тоже просили составить подобные запросы. Мне не понятно, зачем вообще использовать Laravel и другие современные фреймворки, если вы не пользуетесь их "прелестями"? Учите Eloquent и свзяи. В итоге получите легко читаемый и поддерживаемый код вместо того, что у вас в посте. Представьте, что будет, когда параметров будет не 3, а 13.
Не в сети
Я бы создал view
create view match3 as select productID,Count(parmID) FROM продукт_параметр GROUP BY productID HAVING Count(parmID) =3
Итоговый запрос банален:
SELECT продукты.* FROM JOIN match3 On (продукты.id=match3.productID)
Не в сети
А вообще лучше сделать архитектуру по шаблону Entity Attribute Value
Изменено TrueKanonir (08.11.2016 20:59:01)
Не в сети
Страницы 1