php – 如何编写一个MYSQL查询,它将返回嵌套在父项下的子项?

前端之家收集整理的这篇文章主要介绍了php – 如何编写一个MYSQL查询,它将返回嵌套在父项下的子项?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我不知道我问的是否可能,但这是我的情况.我的表格有点像这样:
+--------------------------------------------------+
|   id   |   parent_id   |   name   |   category   | ....
+--------------------------------------------------+
|    0   |       -1      |   item0  |      1       |
|    1   |        0      |   item1  |      1       |
|    2   |        0      |   item2  |      1       |
|    3   |        2      |   item3  |      1       | 
|    4   |        2      |   item4  |      1       | 
|    5   |       -1      |   item5  |      1       | 
+--------------------------------------------------+

parent_id为-1表示它是没有父级的“基础”项.每个项目都有更多的信息列.我需要以某种方式输出嵌套的所有项目,如下所示:

item0 => item1    
      => item2
            => item3
            => item4  
item5

我不知道这是否有意义,但希望它确实如此!

我能想到这样做的唯一方法是进行查询获取所有“基础”项(查询具有parent_id = -1的行)然后遍历每个结果行,查询其parent_id等于当前行的行行的id,然后重复该过程越来越深,直到基本项目没有更多的子项.

有没有更好的办法?

谢谢!!

在纯sql中是不可能的.

sql旨在处理关系数据而不是树(分层数据).

您可以在sql模式中表示树,但是您无法按照自己的意愿生成树.

唯一的方法是通过将尽可能多的连接作为您存储的级别来获得可用的结果.

您当前的架构可能支持多个级别,但是,管理多个级别或两个级别将非常困难.

您可能感兴趣的是Nested Set ModelManaging hierarchical data in mysql

有一些嵌套集的实现,如this one,可以与Doctrine 2一起使用

猜你在找的PHP相关文章