這個問題類似: 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