Я хочу сохранить древовидную структуру произвольной глубины в базе данных SQL (MySQL, но хочу избежать особенностей, специфичных для СУБД). Теперь я хочу вычислить значение N для каждого узла следующим образом:
- сначала вычислите сумму определенного столбца во всех (непосредственных) дочерних элементах текущего узла, которые являются листьями (т.е. не имеют дочерних элементов)
- затем вычислите максимум значений N каждого из оставшихся дочерних элементов, т. е. тех, у которых есть дочерние элементы
- наконец, добавьте результаты первых двух шагов, чтобы получить значение N для текущего узла.
Очевидно, что это включает рекурсию, поэтому вложенные наборы кажутся предпочтительным представлением для этого сценария. Однако я не мог понять, как сформулировать приведенный выше расчет в виде SQL-запроса. Легко получить SUM() или MAX() всех потомков, но способ объединения агрегатных функций сильно усложняет задачу. у кого-нибудь есть решение?