用于汇总子树中数据的查询?

时间:2009-03-07 06:49:47

标签: sql sqlite

我的数据自然适合树形式。因此,我有一个简单的SQL表来存储数据:{id,parentid,data1,...,dataN}

我希望能够“放大”数据并生成一份报告,该报告汇总了当前分支下面的数据。 也就是说,当站在根目录中时,我希望得到所有数据的总数。当我走遍树的某个分支时,我想只得到仅为该节点及其子节点找到的数据的总和。

如何在SQL中编写这样的查询?

提前致谢!

/约翰

2 个答案:

答案 0 :(得分:2)

由于sqlite不支持CONNECT BY,您将无法在单个查询中执行此计算,除非您对数据使用nested sets or materialized paths

或者,以“艰难的方式”执行并以递归方式遍历树,每个子节点从感兴趣的父节点开始查询。

另见:

答案 1 :(得分:1)

Vlad对嵌套集的引用看起来很不错。如果您想要更详细地介绍树和层次结构的内容,那么您还可以查看Joe Celko's book

“ID,ParentID”邻接列表模型实际上是查看关系数据库模型中层次结构的“旧时”方式。