Maison >base de données >tutoriel mysql >mysql-使用sql递归将叶子到树的路径串联成水平列名

mysql-使用sql递归将叶子到树的路径串联成水平列名

WBOY
WBOYoriginal
2016-06-06 09:45:271305parcourir

mysql递归sql查询

我有三张表如下,分别记录类别的树结构、类别信息、类别分类名称:
categorytree:id , parentId , categoryID
category:categoryID,categoryName , level
categorylevel : level , catedorylevelName

外键应该可以看出来吧。
假设表内数据:
categorytree: id parentId categoryID
1 0 1
2 0 2
3 1 3
4 3 4
5 2 7
category: categoryID categoryName level
1 企划 1
2 开发 1
3 年度计划 2
4 项目A 3
7 模块开发 2
categorylevel: level categorylevelName
1 分类一
2 分类二
3 分类三

表结构是为了实现分类的可扩展性和树枝同级的项目名可能重用的考虑,
例如增加到分类四,或年度计划既出现在开发的子项也出现在企划的子项。
父节点ID为零的就是根节点

现在我想根据某个叶子节点,查找出到根节点的路径,然后按分类名作为列值查找出来
例如:查找ID = 4和5 的叶子节点
列:分类一 分类二 分类三
企划 年度计划 项目A
开发 模块开发

列根据categorylevel表确定有几列 叶子节点不一定为第几级别,没有就为空

这样通过sql嵌套查询可以实现吗,我用的数据库是mysql,如何实现呢
求助各位大神啊!!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn