3

次のような SQL Server 2005 テーブルがあります。

create table Taxonomy(
CategoryId integer primary key,
ParentCategoryId integer references Taxonomy(CategoryId),
CategoryDescription varchar(50) 
)

次のようなデータで CategoryIdParentCategoryIdCategoryDescription 123nullfoo345123bar

I'd like to query it into an xml document like this:

<taxonomy>
<category categoryid="123" categorydescription="foo">
      <category id="455" categorydescription="bar"/>
</category>
</taxonomy>

FOR XML AUTO、ELEMENTSでこれを行うことは可能ですか? または、FOR XML EXPLICIT を使用する必要がありますか?

4

1 に答える 1

3

可能ですが、主な制限は、階層のレベルをハードコーディングする必要があることです。SQL Server オンライン ブックには、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')
于 2008-10-02T03:38:30.840 に答える