我想在 SQL 数据库中存储任意深度的树结构(MySQL,但想避免 DBMS 特定的功能)。现在我想为每个节点计算一个值N,如下所示:
- 首先,计算当前节点的所有(直接)子节点中某一列的总和,这些子节点是叶子(即没有子节点)
- 然后,计算每个剩余孩子的值N的最大值,即那些有孩子的孩子
- 最后,将前两步的结果相加,得到当前节点的值N
显然,这涉及递归,因此嵌套集似乎是此场景的首选表示。但是,我不知道如何将上面的计算公式化为 SQL 查询。很容易得到所有后代的 SUM() 或 MAX(),但是聚合函数的组合方式使事情变得非常复杂。有没有人有办法解决吗?