0

SQL階層IDを使用して、子を持たないすべての行(最後の子孫)を取得するにはどうすればよいですか?

テーブルが次のように構成されているとします。

 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 レベル上になり、マットとクリスが必要になります。

他の人も同様です。

どうすればこれを達成できますか?

ありがとう

4

1 に答える 1

0

これを実現するために、次のクエリを変更できます。

declare @hierarchyid hierarchyid
select @hierarchyid = [HierarchyId] from table_name where id = child_id
select * from table_name where [HierarchyId] in (@hierarchyid.GetAncestor(2))
于 2013-03-20T12:35:42.183 に答える