【问题标题】:A query to summarize data in sub-tree?汇总子树中数据的查询?
【发布时间】:2010-10-11 21:49:17
【问题描述】:

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

我希望能够“放大”数据并生成一份总结当前分支下方数据的报告。 也就是说,当站在根目录时,我想要所有数据的总和。当我沿着树的某个分支向下移动时,我只想获得仅为该节点及其子节点找到的数据的总和。

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

提前致谢!

/约翰

【问题讨论】:

    标签: sql sqlite


    【解决方案1】:

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

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

    另见:

    【讨论】:

    • 我正在考虑递归遍历孩子,但希望通过 SQL 提供一个开箱即用的解决方案。在阅读了关于物化路径的文章后,我立即觉得这非常适合我的问题!实施起来很简单:-)谢谢! /约翰
    【解决方案2】:

    Vlad 关于嵌套集的参考看起来不错。如果您想要更详细地涵盖树和层次结构的内容,还可以查看Joe Celko's book

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多