2013-03-20 70 views
0

使用sql層次結構Id如何獲得所有沒有子項的行(即最後的子孫)?Sql HierarchyId如何獲取2級祖先

說我的表的結構是這樣的:

Id, 
Name, 
HierarchyId 

而且具有這些行:

1, Craig,/
2, Steve, /1/ 
3, John, /1/1/ 
4, Collin /1/1/1 
5, Sam, /2/ 
6, Matt, /2/1/ 
7, Chris, /2/1/1/ 
8, Molly, /2/1/1/1 

現在,當我經過的Id = 8,即莫莉我想祖先2點水平,直至該意味着馬特和克里斯

同樣也爲他人。

我該如何做到這一點?

感謝

回答

0

您可以修改下面的查詢來實現這一目標:

declare @hierarchyid hierarchyid 
select @hierarchyid = [HierarchyId] from table_name where id = child_id 
select * from table_name where [HierarchyId] in (@hierarchyid.GetAncestor(2))