Sitecoreのコンテンツツリーのツリー構造を抽出する機能があるかたまに聞かれるので、 Homeアイテム配下のツリー構造をそこそこ整形して出力するT-SQLを作成してみました。
大規模のデータを選択する対象とする際には、個人的には禁じ手の文字列接続をしていますが、まぁ、オンラインで頻繁に実行するクエリではないので、許してください。
クエリをカスタマイズすれば、取得するデータを変更できます。
-- SiteのHomeアイテムのID declare @home as uniqueidentifier = '{XXXXXXXX-YYYY-ZZZZ-AAAA-BBBBBBBBBBBB}'; WITH ItemTree(ItemID, ParentID, ItemName, Level, Path, Path2) AS ( SELECT ID as ItemID, ParentID, Name as ItemName, 1 as Level , CAST(Name as nvarchar(4000)), CAST( Name as nvarchar(4000)) as Path2 FROM dbo.Items WHERE ID = @home UNION ALL SELECT i.ID as ItemID, i.ParentID, i.Name as ItemName , Level + 1 , it.Path + ' / ' + i.Name, SPACE(2*Level) + i.Name FROM dbo.Items i INNER JOIN ItemTree as it on it.ItemID = i.ParentID ) SELECT * FROM ItemTree Order BY Path;
プログラミングすればもっと柔軟にデータを取得できると思うのですが、T-SQLの場合は、お手軽に実行できるので参考に参考に掲載しておきます。
SSMSで実行するとこんな感じになります。
さんのコメント: さんのコメント: