类别和子类别 - 如何设计数据库

时间:2013-01-26 05:30:42

标签: sql database database-design select

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

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

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

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

谢谢你们!

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

2 个答案:

答案 0 :(得分: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
    ...
祝你好运。

答案 1 :(得分:0)