1

我想在 SQL 数据库中存储任意深度的树结构(MySQL,但想避免 DBMS 特定的功能)。现在我想为每个节点计算一个值N,如下所示:

  • 首先,计算当前节点的所有(直接)子节点中某一列的总和,这些子节点是叶子(即没有子节点)
  • 然后,计算每个剩余孩子的值N的最大值,即那些有孩子的孩子
  • 最后,将前两步的结果相加,得到当前节点的值N

显然,这涉及递归,因此嵌套集似乎是此场景的首选表示。但是,我不知道如何将上面的计算公式化为 SQL 查询。很容易得到所有后代的 SUM() 或 MAX(),但是聚合函数的组合方式使事情变得非常复杂。有没有人有办法解决吗?

4

1 回答 1

1

如果架构还具有额外的计算列,例如深度和“是叶节点”怎么办?

它需要更多的维护(不是嵌套集是免维护的),但我认为它使用“标准”SQL 使上述查询触手可及。

于 2010-09-12T21:36:41.177 回答