我有一张与自己有一对多关系的桌子。每条记录可以有同一个表中的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(或更多)
答案 0 :(得分:3)
这可能是一些帮助: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解决方案。看起来你会做一些非常低效的事情,或者你将不得不修改你的表结构来支持这个特定的功能。
答案 1 :(得分:1)
一种解决方案是在表“topmost_parent”中添加一列并加入其中。
答案 2 :(得分:0)
您应该考虑使用嵌套集模型重新构建数据。以下链接介绍了如何执行此操作:
http://www.vbmysql.com/articles/database-design/managing-hierarchical-data-in-mysql