2013-03-20 71 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))