我的数据自然适合树形式。因此,我有一个简单的SQL表来存储数据:{id,parentid,data1,...,dataN}
我希望能够“放大”数据并生成一份报告,该报告汇总了当前分支下面的数据。 也就是说,当站在根目录中时,我希望得到所有数据的总数。当我走遍树的某个分支时,我想只得到仅为该节点及其子节点找到的数据的总和。
如何在SQL中编写这样的查询?
提前致谢!
/约翰
答案 0 :(得分:2)
由于sqlite
不支持CONNECT BY
,您将无法在单个查询中执行此计算,除非您对数据使用nested sets or materialized paths。
或者,以“艰难的方式”执行并以递归方式遍历树,每个子节点从感兴趣的父节点开始查询。
另见:
答案 1 :(得分:1)
Vlad对嵌套集的引用看起来很不错。如果您想要更详细地介绍树和层次结构的内容,那么您还可以查看Joe Celko's book。
“ID,ParentID”邻接列表模型实际上是查看关系数据库模型中层次结构的“旧时”方式。