Задать вопрос
@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
  • Вопрос задан
  • 227 просмотров
Подписаться 3 Средний 8 комментариев
Помогут разобраться в теме Все курсы
  • Учебный центр IBS
    QPT PostgreSQL 16. Оптимизация запросов
    1 неделя
    Далее
  • Skillfactory
    Профессия C++ разработчик
    11 месяцев
    Далее
  • Нетология
    Python-разработчик с нуля
    6 месяцев
    Далее
Пригласить эксперта
Ваш ответ на вопрос

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

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