Php 选择mysql中邻接列表模型表示的任意深的树?
在mysql中,我有一个使用邻接列表模型表示的树Php 选择mysql中邻接列表模型表示的任意深的树?,php,mysql,nested-sets,adjacency-list,Php,Mysql,Nested Sets,Adjacency List,在mysql中,我有一个使用邻接列表模型表示的树 MYTREE id parent_id title 我想知道: 给定一个节点的id,是否有任何方法可以选择该节点所在的整个树,并包含深度信息?这棵树任意地深,所以我不能说可能有多少层。但结果集可能如下所示: ID TITLE DEPTH 4 title1 1 8 title2 2 16 title8 3 9 title3 2 15
MYTREE
id
parent_id
title
我想知道:
给定一个节点的id,是否有任何方法可以选择该节点所在的整个树,并包含深度信息?这棵树任意地深,所以我不能说可能有多少层。但结果集可能如下所示:
ID TITLE DEPTH
4 title1 1
8 title2 2
16 title8 3
9 title3 2
15 title4 3
我知道使用嵌套集模型可以做到这一点。但嵌套集有些地方并不理想,我希望不必切换
谢谢你的建议 简短回答:不
遍历由父指针表示的树的唯一方法是在下一个指针之后跟随一组父ID。如果您可以限制深度,只需在整个表中连接多次即可,但如果深度不受限制,则应用程序端循环通常是可行的。编辑:我没有注意到标题中的任意深度子句: 您可以编写一个存储过程在行上递归
但是嵌套集有什么不理想的地方(至少是插入前触发器或存储过程无法处理的地方)?父/子并不是存储层次数据的唯一方法。。。嵌套集模型在这方面非常灵活。特拉维斯在最初的帖子中承认了这一点。我特别要解决的问题是,是否可以使用父指针来完成。对树的修改—比如添加节点—重写大行的左右值。我很关心可伸缩性。很高兴听到您在这么大的负载下成功地使用了嵌套集。我的要求几乎没有那么重。