Domanda

Ho una tabella di SQL Server 2005 come questa:

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

con i dati che sembrano CategoryIdParentCategoryIdCategoryDescription 123nullfoo345123bar

Vorrei interrogarlo in un documento XML come questo:

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

È possibile farlo con FOR XML AUTO, ELEMENTS? O devo usare FOR XML EXPLICIT?

È stato utile?

Soluzione

È possibile ma il limite principale è che i livelli della gerarchia devono essere codificati. La documentazione in linea di SQL Server contiene una descrizione di come rappresentare le gerarchie in XML in questo link . Di seguito è una query di esempio che produce l'XML richiesto:

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')
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top