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