Задача - сборка сумм по древовидному справочнику.

Есть справочник:

1. Расходы
1.1. Вид расходов 1
1.1.1. Статья 1
1.1.2. Статья 2
1.2. Вид расходов 2
1.2.1. Статья 3
1.2.2. Статья 4
...

в нем есть ссылки на самого себя по parent_id, то есть обычная древовидная таблица (вложенность произвольная, есть ветки глубиной в 2 а есть в 7).

И есть таблица проводок, где каждая статья (1.1.1, 1.1.2, 1.2.1, 1.2.2,...) присутсвует в виде субконто по дебету либо кредиту. Соответственно, агрегаты по отдельным статьям получаются простеньким запросом с group by, а вот как получить "агрегаты агрегатов" по узлам дерева? Хочется свести к минимуму шорканье по таблице проводок (то есть желательно обработать ее одним проходом).

Пока что как вариант - загнать первоначальные агрегаты во временную таблицу (FB 2.1) и в сборке сумм по дереву работать с ней, но может есть более элегантное решение?




Ответить