TSQL: Как сделать самостоятельное объединение в XML, чтобы получить вложенный документ? - PullRequest
3 голосов
/ 02 октября 2008

У меня есть таблица SQL Server 2005, как это:

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

с данными, похожими на CategoryIdParentCategoryIdCategoryDescription 123nullfoo345123bar <br/></p> <p>I'd like to query it into an xml document like this:</p> <pre><taxonomy> <category categoryid="123" categorydescription="foo"> <category id="455" categorydescription="bar"/> </category> </taxonomy>

Возможно ли это сделать с помощью FOR XML AUTO, ELEMENTS? Или мне нужно использовать FOR XML EXPLICIT?

1 Ответ

3 голосов
/ 02 октября 2008

Возможно, но главное ограничение заключается в том, что уровни иерархии должны быть жестко закодированы. В электронной документации по 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')
...