web-dev-qa-db-fra.com

Exportation des résultats vers XML

J'essaie de créer un fichier XML à partir d'une requête SQL. Le put de sortie devrait ressembler à l'image ci-dessous

enter image description here

Où la balise BranchID apparaît à nouveau comme SubParentBranchID s'il y a plus d'un SubBranchID associé à BranchID. Dans l'image ci-dessous BranchID 94 a deux SubBranchID 63 et 64.

J'ai mordé cette requête SQL

SELECT
a.[heading_id] as BranchID,
c.[name] as BranchName,
a.[business_id] as SubBranchID, 
a.[heading_id] as SubParentBranchID,
b.[name] as SubBranchName
   FROM [BUSINESSHEADINGLINK] as a
   join [BUSINESS] as b on a.business_id = b.business_id
   join [HEADING] as c on   a.heading_id = c.heading_id 
FOR XML PATH ('Branch'), ROOT('BranchInfo')

Cela me donne le XML suivant

enter image description here

Ici, vous pouvez voir que non plus, j'ai le tag <SubBranches> ni <SubBranch>. Aussi je n'ai pas <SubParentBranchID>. Le fichier XML devrait être comme:

enter image description here

Quelqu'un peut-il m'aider avec le code SQL?

Aussi je voudrais le sauvegarder sur C:/temp Après exécution.

6
itsAftab

Si votre structure n'est que deux niveaux profonde, vous pouvez utiliser un for xml Requête pour construire la partie sous la branche quelque chose comme ça.

select H.heading_id as 'BranchID',
       H.name as 'BranchName',
       (
       select B.business_id as 'SubBranchID',
              H.heading_id as 'SubParentBrachID',
              B.name as 'SubBranchName'
       from dbo.BUSINESS as B
         inner join dbo.BUSINESSHEADINGLINK as L
           on B.business_id = L.business_id
       where L.heading_id = H.heading_id
       for xml path('SubBranch'), root('SubBranches'), type
       )
from dbo.HEADING as H
for xml path('Branch'), root('BranchInfo'), type;

SQL FIDDLE

3
Mikael Eriksson