【发布时间】:2012-04-20 17:55:25
【问题描述】:
我有一个包含ID、Amount 和Parent_ID 的表。 (实际上它有点复杂,但这是本示例的所有重要列)。基本上我想做的是按最低的公共父级(即父级ID为NULL的父级)对Amount列进行分组和求和。
ID Amount Parent_ID
1 100 NULL
2 150 1
3 50 1
4 75 3
5 25 4
6 125 NULL
7 50 6
8 50 7
9 100 8
预期结果:
ID SUM
1 400
6 325
如您所见,它只返回两条记录,即没有父项的记录,这意味着它们是顶级项目。 Sum 列是其所有子级的 Amount 的总和,因此 ID = 1 是 1,2,3,4 和 5 的总和。ID = 6 是 6,7 的总和, 8 和 9。
【问题讨论】:
-
是否有设定的嵌套数?即你是在 5 点停止还是会一直持续下去?
-
理论上它可以永远持续下去,但如果没有解决方案让它永远持续下去,我想我可以选择一个只能到 5 左右的解决方案。
-
测试设置环境:sqlfiddle.com/#!2/b7a79
-
许多关于针对 MySQL 的递归查询的问题...如果没有实际的存储过程来处理链上的每个递归级别,就无法完成。
-
MySQL 不支持分层查询。 forums.mysql.com/read.php?113,136927,155954#msg-155954 将给出一些指示,这里也有一些关于 SO 的示例。现在查找它们...和stackoverflow.com/questions/5749385/…
标签: mysql