无限分类,如何查询所有后代分类下数据?

在无限分类时,顶级分类下有无数子分类,子分类又有孙分类,子子孙孙无穷尽也。
那么,但我要查询某一个分类,已经它的后台分类下的所有数据并且排序时怎么处理。
举例,有一张分类表,有一张文章表,分类中有顶级分类国内新闻,国内新闻下分类下有社会新闻、科技新闻、娱乐新闻等等频道,我要浏览国内新闻时,把社会新闻、科技新闻、娱乐新闻等子分类下所属的新闻查出来统一展示,可以可以先查询出国内新闻下的所有子分类和孙分类、后代分类,然后查询

SELECT FROM `article` WHERE `cate`=41 AND `cate`=52 AND `cate`=56 AND ...LIMIT 0,20

但是,如果该网站分类不是普通的分类,而是类似标签,且标签有子标签,子标签还有子标签,每个标签的子标签可能达到数百数千时怎么办呢?

如果一个子标签,可以同时拥有两个及两个以上的父标签呢

阅读 9k
8 个回答

层级节点,做code,看一下我天朝的行政区划代码,

第一层 第二层 第三层
100 100100 100100100
200 200100 200100100
300 300100 300100100

查询某个节点的子集(子子集等),like '100%'

idpid保留,两种模式。

使用CTE, Mysql从8.0开始支持CTE

要么在数据库里完成递归,要么程序里写递归

使用 mysql 预排序遍历树算法

递归,子级的pid=父级的id

mysql中增加pids字段,存储所有父级id,通过分隔符分隔。
查询时使用like、instr、locate之类的语法进行查询是否包含父级id

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题