Php 有效实施;类别“;树?(MySQL)
如果我有一个类别树,其中有一个未确定级别的子类别,是否有可能在一个查询中获得整个类别树(没有任何循环) 这是一种可能的情况:Php 有效实施;类别“;树?(MySQL),php,mysql,categories,categorization,Php,Mysql,Categories,Categorization,如果我有一个类别树,其中有一个未确定级别的子类别,是否有可能在一个查询中获得整个类别树(没有任何循环) 这是一种可能的情况: category_id parent_id Name 0 null Home 1 null Auto 2 0 Living Room 3 2 Couches 4 2 TV 5
category_id parent_id Name
0 null Home
1 null Auto
2 0 Living Room
3 2 Couches
4 2 TV
5 4 Home Theatre
6 5 Cables
如果您注意到,电缆沿袭是这样的:
家庭>客厅>电视>家庭影院>电缆
现在,我得到当前类别的父类别并继续循环,直到找到父类别为空的父类别。我知道这部分以前有人问过。然而,我想知道有没有更好的方法来构造这个表,这样我就不必运行X个数量的查询(或子查询)?例如,我考虑添加一个名为parents的第四列,或者在一个逗号分隔的列表中包含整个沿袭(在这种情况下,parents将是:
5,4,2,0
。然而,这似乎很俗气,效率低下(并且容易被打破).是否有更好的机制可用?是的,有比简单树更好的结构来对数据库中的分层数据进行建模。请看一看,例如或。闭包表与您最后想到的类似。我支持闭包表的建议。提供了各种方法的详细说明,包括闭包表,解决这个问题。当我做类似的事情时,我发现这个非常有用:Tyvm。从来没有听说过“闭包表”之前。现在阅读文章。是的,有比简单树更好的结构来建模数据库中的分层数据。请看一看例如或。闭包表与您在最后想到的类似。我支持闭包表的建议。提供了各种解决方法的良好描述,包括闭包表这个问题。当我在做类似的事情时,我发现它非常有用:Tyvm。以前从未听说过“闭包表”。现在阅读文章。