1

所以我正在创建一个数据库,它有一个类别、子类别、子子类别、子子子类别……你明白了,它可以永远持续下去。

所以我做了一张桌子。类别名称|ParentID|ID|预算|

为了解释我的情况,我会假装每个类别都有预算。我将如何制作能够获取类别及其子类别及其子类别的总预算的 Select 语句。这也意味着当我进入一个子类别时,我也应该能够看到它自己的子类别的总预算。

任何建议都会对我有很大帮助!

多谢你们!

编辑:我忘了提,数据库是 MySQL。我将使用 PHP 在网页上显示数据。

4

2 回答 2

0

您正在使用难以搜索的模型(邻接列表模型)。您是否考虑过合并嵌套集模型?这是一篇关于该主题的好文章:

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
    ...

祝你好运。

于 2013-01-26T05:45:34.277 回答
0

希望以下链接将带您到正确的道路..

http://explainextended.com/2009/03/17/hierarchical-queries-in-mysql/

http://forums.databasejournal.com/showthread.php?30908-Recursive-MYSQL-Query

于 2013-01-26T05:45:48.190 回答