这个问题类似: How do I query for all the nodes between two nodes in a tree?返回所有节点在许多一对多层次树
但我不有一个闭合(扁平化)表,一个孩子可以有很多家长和ID遍历不一定按顺序。嵌套深度没有限制。
假设循环引用是不可能的... 我想返回遍历层次结构所需的所有行。
ParentID ID RowNumber(Reference)
1 2 1
2 4 2
4 3 3
3 5 4
1 6 5
6 7 6
2 8 7
3 9 8
1 8 9
6 8 10
鉴于1
我将如何编写一个查询返回的所有行(得到所有后代relationsips):
下表假设?
同样地,给定的2
我期望行2,3,4,7,8
鉴于6
我期望的行6和10
偶尔假阳性是可接受的,因为在被复制的行结果。缺失的行是不可接受的
实现在MSACCESS和SQL Server 2000+
只是为了澄清,你的意思是一个孩子可以有很多*父母*而不是许多*祖先*,对吗?我只问,因为你发布的样本数据没有显示任何有多个父母的孩子,但是4,3,5,7有多个祖先。 – mwolfe02 2011-03-08 19:43:50
一个孩子可以有许多父母*和*许多后代。我将添加更多示例 – Matthew 2011-03-08 19:46:18
此外,您希望基于示例数据实现的示例查询结果将非常有用。一定要使用捕捉所有可能的复杂性的样本数据(即,具有多个父母的孩子等)。 – mwolfe02 2011-03-08 19:48:03