I'm try use "FOR XML" feature in SQL Server. I am using SQL Server 2008 Express. I need XML results with SQL Server.
I have two tables, dbo.document and dbo.items.
Sample data:
First table [Document]:
ID info1 info2
------- ---- -----
1 11 22
Second table [Items]:
ID nvarchar1 nvarchar2 nvarchar3 docId
------- ---- ---- ---- ----
1 d e f 1
2 dd ee ff 1
Based on Create single XML from SQL Server multiple tables query , Get nested XML output sql server and SQL Server “FOR XML” output from queries joining two tables my code is:
SELECT TOP (1)Document.info1, Document.info2,
(SELECT TOP (3)
nvarchar1,
nvarchar2,
nvarchar3
FROM Items
WHERE Items.docId = Document.id
FOR XML PATH ('myitem'), TYPE)
FROM Document
order by id desc
FOR XML PATH ('List'), ROOT ('myroot')
And result is:
<myroot>
<List>
<info1>11</info1>
<info2>22</info2>
<myitem>
<nvarchar1>d</nvarchar1>
<nvarchar2>e</nvarchar2>
<nvarchar3>f</nvarchar3>
</myitem>
<myitem>
<nvarchar1>dd</nvarchar1>
<nvarchar2>ee</nvarchar2>
<nvarchar3>ff</nvarchar3>
</myitem>
</List>
</myroot>
But I want xml in following format: (insert elements info1, info2 directly after myroot)
<myroot>
<info1>11</info1>
<info2>22</info2>
<List>
<myitem>
<nvarchar1>d</nvarchar1>
<nvarchar2>e</nvarchar2>
<nvarchar3>f</nvarchar3>
</myitem>
<myitem>
<nvarchar1>dd</nvarchar1>
<nvarchar2>ee</nvarchar2>
<nvarchar3>ff</nvarchar3>
</myitem>
</List>
</myroot>
Does anyone have any solutions for this case? Thanks a lot.
Note: Next variant: info1,info 2 will be stored in third table.