【问题标题】:SQL: Select SUM of all children records recursivelySQL:递归地选择所有子记录的总和
【发布时间】:2010-02-25 17:01:28
【问题描述】:

我有一张与自身有一对多关系的表。每条记录可以有来自同一个表的 n 个子项。例如

create table folder
ID: Number 20 PK
PARENT_ID: Number 20 FK references folder.ID
SIZE: NUMBER 20
...

给定一个 ID,我想选择所有文件夹记录的 SUM(SIZE) 递归地。目标数据库是MySql 5,但它会很好 如果它足够通用,也可以在 Oracle 和 MS-SQL 中工作。

我不知道树有多深,可能是 1 级,可能是 50(或更多)

【问题讨论】:

    标签: sql mysql oracle tsql hierarchy


    【解决方案1】:

    这可能是一些帮助:http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/

    这将是 Oracle (http://download-east.oracle.com/docs/cd/B12037_01/server.101/b10759/queries003.htm) 中的一个简单查询,因为它支持使用“CONNECT BY”的分层查询,但我认为 MySQL 没有类似的解决方案。看起来你要做一些非常低效的事情,或者你将不得不修改你的表结构来支持这个特定的功能。

    【讨论】:

      【解决方案2】:

      一种解决方案是向表“topmost_parent”添加一列并加入该列。

      【讨论】:

        【解决方案3】:

        您应该考虑使用嵌套集模型重新构建数据。以下链接描述了如何做到这一点:

        http://www.vbmysql.com/articles/database-design/managing-hierarchical-data-in-mysql

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-02-07
          • 1970-01-01
          • 2020-09-15
          • 2020-02-10
          • 1970-01-01
          • 2015-07-17
          • 1970-01-01
          相关资源
          最近更新 更多