所以我正在创建一个数据库,它有一个类别、子类别、子子类别、子子子类别……你明白了,它可以永远持续下去。
所以我做了一张桌子。类别名称|ParentID|ID|预算|
为了解释我的情况,我会假装每个类别都有预算。我将如何制作能够获取类别及其子类别及其子类别的总预算的 Select 语句。这也意味着当我进入一个子类别时,我也应该能够看到它自己的子类别的总预算。
任何建议都会对我有很大帮助!
多谢你们!
编辑:我忘了提,数据库是 MySQL。我将使用 PHP 在网页上显示数据。
所以我正在创建一个数据库,它有一个类别、子类别、子子类别、子子子类别……你明白了,它可以永远持续下去。
所以我做了一张桌子。类别名称|ParentID|ID|预算|
为了解释我的情况,我会假装每个类别都有预算。我将如何制作能够获取类别及其子类别及其子类别的总预算的 Select 语句。这也意味着当我进入一个子类别时,我也应该能够看到它自己的子类别的总预算。
任何建议都会对我有很大帮助!
多谢你们!
编辑:我忘了提,数据库是 MySQL。我将使用 PHP 在网页上显示数据。
您正在使用难以搜索的模型(邻接列表模型)。您是否考虑过合并嵌套集模型?这是一篇关于该主题的好文章:
http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/
关于您的问题,递归函数将是您最好的选择。除非您知道子类型的潜在范围,否则我认为您不能仅使用 SQL 来做到这一点。在这种情况下,您可以多次加入表格——如下所示:
SELECT t.CatName, SUM(t.Budget+t2.Budget+t3.Budget...)
FROM YourTable t
LEFT JOIN YourTable t2 ON t2.parentid = t1.id
LEFT JOIN YourTable t3 ON t3.parentid = t2.id
LEFT JOIN YourTable t4 ON t4.parentid = t3.id
...
祝你好运。
希望以下链接将带您到正确的道路..
http://explainextended.com/2009/03/17/hierarchical-queries-in-mysql/
http://forums.databasejournal.com/showthread.php?30908-Recursive-MYSQL-Query