Возникла проблема с подсчетом количества элементов в категориях и подкатегориях. В каждой категории есть подкатегории, а в подкатегориях есть свои подкатегории. Количество таких уровней неограничено. Записи хранятся в самой "нижней" категории. Категории и записи представлены в виде отдельных таблиц в базе данных.
Структура таблиц примерно такая:
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
Спасибо.