@Barancheek

Как правильно написать sql запрос агрегации для фасетного фильтра?

Предыстория:
Делаю пет проект магазина с возможностью фильтрации товаров по десяткам атрибутов. Я понятия не имею как это должно делаться и детальной информации мне найти не удалось, поэтому делал так как получилось. Создал базу данных следующей структуры (как позже выяснилось это называется EAV модель)
65f2ef11b754e726681007.jpeg

Мне необходимо создать запрос получающий все атрибуты конкретной категории со всеми имеющимся опциями для этого атрибута и количеством товаров для каждой опции каждого атрибута.

Первую половину я получил
65f2f01f0189f178482229.png
Теперь мне надо получить третью колонку с количеством товаров и не знаю как мне это правильно написать.

Обновление:
У меня получился следующий sql
SELECT a.id as attr_id, a.alias as attr_alias, a.name as attr_name, o.id as option_id, o.alias as option_alias, o.value as option_value, COUNT(pp.product_id) AS prod_count
FROM "Product" p 
JOIN "Product_property" pp on pp.product_id = p.id
JOIN "Attribute" a ON pp.attribute_alias  = a.alias
JOIN "Option" o ON pp.option_id  = o.id
where p.cat_id = 1
GROUP BY a.id, a.name, a.alias, o.id, o.alias, o.value
  • Вопрос задан
  • 213 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы