1

次のデータを含む次のように、CorporateStructure としてテーブルがあります。

╔════╦════════╦═════════════╗
║ Id ║  Name  ║ HierarchyId ║
╠════╬════════╬═════════════╣
║  1 ║ john   ║ /           ║
║  2 ║ smith  ║ /1          ║
║  3 ║ John2  ║ /1/1/       ║
║  4 ║ Collin ║ /1/1/1      ║
╚════╩════════╩═════════════╝

Id は ID 4 で、親を見つけたいのですが、どうすればそれを行うことができますか?

よろしくヴィシャール

4

1 に答える 1

3

Michael が指摘したように、smith ( /1) と Collin ( /1/1/1) のリテラル値は有効ではないようです。HierarchyId

これらの値を修正すると、親ノードを取得できますGetAncestor

これを試して :-

Select * from YourTable
where [HierarchyId] in (
           Select [HierarchyId].GetAncestor([HierarchyId].GetLevel()-1).ToString()
           from YourTable
           where id=4
           )

SQL FIDDLEデモ

于 2013-03-20T11:12:47.510 に答える