2008-10-02 4 views
3

내가 2005 표 같은 SQL 서버가 : 데이터TSQL : 중첩 된 문서를 가져 오기 위해 XML에서 자체 조인을 수행하려면 어떻게해야합니까?

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을 사용해야합니까?

답변

3

중요한 제한 사항은 계층 구조의 수준을 하드 코딩해야한다는 것입니다. SQL Server 온라인 설명서에는 XML로 계층 구조를 나타내는 방법에 대한 설명이 this link에 있습니다. 다음은 요청한 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')