我认为答案是否定的,但是我很喜欢它,任何人都可以深入了解如何在SQL(MySQL)中将树结构爬行到任何深度,但只需一个查询
更具体地说,给定树结构表(id,data,data,parent_id)和表中的一行,是否可以获得所有后代(子/孙/等),或者就此而言所有祖先(父/祖父母)/etc)使用单个查询而不知道它将向下或向上移动多远?
或者正在使用某种递归需求,我不断深入查询,直到没有新的结果?
具体来说,我正在使用Ruby和Rails,但我猜这不是很相关.
是的,这是可能的,它被称为修改的预订树遍历,如这里最好的描述
Joe Celko的树和SQL中的层次结构用于聪明人
这里提供了一个工作示例(在PHP中)
http://www.sitepoint.com/article/hierarchical-data-database/2/
这里有几个资源:
http://forums.mysql.com/read.php?10,32818,32818#msg-32818
在MySQL中管理分层数据
http://lists.mysql.com/mysql/201896
基本上,您需要在存储过程或查询中执行某种游标或构建邻接表.我会避免在db之外的递归:取决于你的树有多深,这可能会变得非常缓慢/粗略.