加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > PHP > 正文

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

发布时间:2020-05-27 08:03:18 所属栏目:PHP 来源:互联网
导读:我不知道我问的是否可能,但这是我的情况.我的表格有点像这样: +--------------------------------------------------+| id | parent_id | name | category | ....+--------------------------------------------------+|

我不知道我问的是否可能,但这是我的情况.我的表格有点像这样:

+--------------------------------------------------+
|   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 Model或Managing hierarchical data in mysql

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

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读