使用PHP MySQL创建分类层次结构(按顺序)

4

我想要将所有类别和子类别按照层级进行排序:

关键在于如何通过MySQL按照位置字段有序地获取它们。

  • Cat A --> 位置 10
    • Sub-Cat 1 --> 位置 10
    • Sub_Sub_Cat 1 --> 位置 20
      • Sub_Sub_Cat 2 --> 位置 10
    • Sub_Cat 2 --> 位置 30
  • Cat B --> 位置 20
  • Cat C --> 位置 30

MySQL代码:

 CREATE TABLE IF NOT EXISTS `categories` (
   `category_id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
   `position` smallint(5) unsigned,
   `parent_id` mediumint(8) unsigned NOT NULL DEFAULT '0'
  PRIMARY KEY (`category_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 ;
1个回答

5
你希望使用SQL遍历树形结构?使用邻接列表模型是不可能的,你需要使用嵌套集模型。然后,你可以通过 ORDER BY left 来正确排序并获取整个树。详情请参考此处

哇,这太酷了。我简直不敢相信我以前从未见过这个!这解释了一些数据库中奇怪的“lft”和“rgt”字段 ;) - Spiny Norman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接