このようにhierarchyIdを挿入したいと思います
/
- CEO (ルート)/1/
- 購入マネージャ/1/1/
- エグゼクティブの購入
/2/
- 営業部長/2/1/
- 営業責任者
これは私が使用したい階層です。それは正しいものですか?もしそうなら、どうすればこれを行うことができますか?コードスニペットを教えてください。
このようにhierarchyIdを挿入したいと思います
/
- CEO (ルート)
/1/
- 購入マネージャ
/1/1/
- エグゼクティブの購入/2/
- 営業部長
/2/1/
- 営業責任者これは私が使用したい階層です。それは正しいものですか?もしそうなら、どうすればこれを行うことができますか?コードスニペットを教えてください。
データ型に関する情報を検索しているときにこの質問に出くわし、hierarchyid
私の後に来る他の誰かがhierarchyid
、質問に従って s を挿入するコードも見るのは興味深いと思いました。
これらが s を挿入する唯一の方法であるとhierarchyid
は言いませんが、私のように、このデータ型を扱った経験がない人の助けになることを願っています。
この表を使って、
create table OrgChart
(
Position hierarchyid,
Title nvarchar(50)
)
Parseを使用hierarchyid
して、文字列パスを使用して s を直接挿入できます。
insert into OrgChart(Position, Title)
values (hierarchyid::Parse('/'), 'CEO'),
(hierarchyid::Parse('/1/'), 'Purchase Manager'),
(hierarchyid::Parse('/1/1/'), 'Purchase Executive'),
(hierarchyid::Parse('/2/'), 'Sales Manager'),
(hierarchyid::Parse('/2/1/'), 'Sales Executive')
次のクエリを使用してテーブルを確認します
select Position.ToString(), * from OrgChart
hierarchyid
データ型メソッドGetRootおよびGetDescendantを使用して階層を構築することもできます。この方法はより面倒だと思いましたが、階層をプログラムで管理している場合は、これらの方法を使用する必要があると思います。
declare @root hierarchyid,
@id hierarchyid
set @root = hierarchyid::GetRoot()
insert into OrgChart(Position, Title) values (@root, 'CEO')
set @id = @root.GetDescendant(null, null)
insert into OrgChart(Position, Title) values (@id, 'Purchase Manager')
set @id = @root.GetDescendant(@id, null)
insert into OrgChart(Position, Title) values (@id, 'Sales Manager')
select @id = Position.GetDescendant(null, null) from OrgChart where Title = 'Purchase Manager'
insert into OrgChart(Position, Title) values (@id, 'Purchase Executive')
select @id = Position.GetDescendant(null, null) from OrgChart where Title = 'Sales Manager'
insert into OrgChart(Position, Title) values (@id, 'Sales Executive')
他の回答で提供されているリンクを必ず確認してください。ただし、このコードを試してみることも役立つことを願っています。