J'essaie de créer un fichier XML à partir d'une requête SQL. Le put de sortie devrait ressembler à l'image ci-dessous
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
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:
Quelqu'un peut-il m'aider avec le code SQL?
Aussi je voudrais le sauvegarder sur C:/temp
Après exécution.
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;