@serious911

Подсчет количества элементов в категориях и подкатегориях (SQL)?

Возникла проблема с подсчетом количества элементов в категориях и подкатегориях. В каждой категории есть подкатегории, а в подкатегориях есть свои подкатегории. Количество таких уровней неограничено. Записи хранятся в самой "нижней" категории. Категории и записи представлены в виде отдельных таблиц в базе данных.

Структура таблиц примерно такая:

Categories
-------------
id
parent_id
....

Posts
-------------
id
....
category_id
.....


Необходимо посчитать количество элементов в каждой категории включая подкатегории. Все это можно представить в виде дерева и теоритически можно рекурсивно посчитать количество элементов в вершине дерева. Но проблема в том, как это сделать в виде SQL запросов к БД, чтобы не сильно грузить ее. Возможно как-то изменить структуру таблиц?

Для отдельной категории сделал примерно так:
SELECT categories.*,(SELECT COUNT(posts.id) FROM posts WHERE posts.category_id = categories.id) AS count FROM categories WHERE 1


Спасибо.
  • Вопрос задан
  • 1357 просмотров
Пригласить эксперта
Ответы на вопрос 3
MaxDukov
@MaxDukov
впишусь в проект как SRE/DevOps.
может Вам поможет ROLLUP?
Ответ написан
Комментировать
@heartdevil
плыву как воздушный шарик
Привет.
Так-с. А если вот так примерно? Запрос не тестил. Просто как идея. На вскидку...
SELECT par.Id, COUNT(po.id) AS postCount
FROM Categories AS par
INNER JOIN Categories AS sub ON par.id = sub.parent_id
INNER JOIN Posts AS po ON po.id = sub.id
GROUP BY par.Id
Ответ написан
Комментировать
kimono
@kimono
Web developer
Копайте в сторону nested sets для таблицы категорий. Тогда все будет значительно проще.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
24 апр. 2024, в 23:40
10000 руб./за проект
24 апр. 2024, в 23:13
130000 руб./за проект