TSQL: Wie mache ich eine Self-Join in XML ein verschachteltes Dokument zu bekommen?
-
03-07-2019 - |
Frage
Ich habe eine SQL Server 2005-Tabelle wie folgt aus:
create table Taxonomy(
CategoryId integer primary key,
ParentCategoryId integer references Taxonomy(CategoryId),
CategoryDescription varchar(50)
)
mit Daten, die wie
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>
Ist es möglich, dies mit FOR XML AUTO, ELEMENTE zu tun? Oder muss ich für die Verwendung von XML EXPLICIT?
Lösung
Es ist möglich, aber die wichtigste Einschränkung ist, dass die Ebene der Hierarchie muss hart codiert werden. Das SQL Server-Online hat eine Beschreibung, wie bei Link . Im Folgenden finden Sie eine Beispielabfrage, die das XML erzeugt Sie angefordert:
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')
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow