TSQL:XML で自己結合を実行してネストされたドキュメントを取得するにはどうすればよいですか?
-
03-07-2019 - |
質問
次のような SQL Server 2005 テーブルがあります。
create table Taxonomy(
CategoryId integer primary key,
ParentCategoryId integer references Taxonomy(CategoryId),
CategoryDescription varchar(50)
)
次のようなデータ
CategoryIdParentCategoryIdCategoryDescription
123nullfoo345123bar
次のように XML ドキュメントにクエリを実行したいと思います。
<taxonomy>
<category categoryid="123" categorydescription="foo">
<category id="455" categorydescription="bar"/>
</category>
</taxonomy>
FOR XML AUTO, ELEMENTS でこれを行うことは可能ですか?それとも FOR XML EXPLICIT を使用する必要がありますか?
解決
可能ですが、主な制限は、階層のレベルをハードコーディングする必要があることです。SQL Server Books Online には、XML で階層を表現する方法についての説明があります。 このリンク. 。以下は、要求した XML を生成するサンプル クエリです。
SELECT [CategoryId] as "@CategoryID"
,[CategoryDescription] as "@CategoryDescription"
,(SELECT [CategoryId]
,[CategoryDescription]
FROM [dbo].[Taxonomy] "Category"
WHERE ParentCategoryId = rootQuery.CategoryId
FOR XML AUTO, TYPE)
FROM [dbo].[Taxonomy] as rootQuery
where [ParentCategoryId] is null
FOR XML PATH('Category'), ROOT('Taxonomy')
所属していません StackOverflow