选择一个由mysql中的邻接列表模型表示的任意深度树?

时间:2010-06-10 19:08:23

标签: 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      title4    3

我知道可以使用嵌套集模型执行此操作。但是有些嵌套的东西并不理想,我希望不必切换。

感谢您的建议!

2 个答案:

答案 0 :(得分:0)

简答:不。

遍历用父指针表示的树的唯一方法是在下一个之后跟随一组父ID。如果您可以通过简单地在表中连接多次来限制深度,那么这是可能的,但是通过无限深度,应用程序端循环通常是可行的方法。

答案 1 :(得分:0)

编辑:我没有注意到标题中任意深的条款:

您可以编写一个存储过程来递归行。

但是嵌套集的优点是什么(至少在插入触发器或存储过程之前无法处理)?