Получение XML из SQL без вложенных узлов
Привет,
Используя следующий запрос, я получаю результат, который имеет "подузел", содержащий несколько "подузлов", и "несвязанный" узел, также содержащий "несвязанные"узлы.
Как я могу получить результат без внешних " суб " и "несвязанных" узлов?
Запрос составлен, но отражает реальный запрос, который я использую, который должен привести к уже существующему результату, как описано выше.
<master> <alldata head_id="C6DF494E-4DA7-4726-8288-BB463CB96834"> <sub> <sub> <own_id>10</own_id> <own_field>Sub1 field</own_field> </sub> <sub> <own_id>11</own_id> <own_field>Sub2 field</own_field> </sub> </sub> <unrelated> <unrelated> <own_id>100</own_id> <own_field>another field</own_field> </unrelated> </unrelated> </alldata> </master>
Что я уже пробовал:
declare @head1 table<br /> (head_id uniqueidentifier)<br /> <br /> declare @sub1 table (<br /> head_id uniqueidentifier,<br /> own_id int,<br /> own_field nvarchar(20))<br /> <br /> declare @sub2 table (<br /> head_id uniqueidentifier,<br /> own_id int,<br /> own_field nvarchar(20))<br /> <br /> declare @unrelated table (<br /> head_id uniqueidentifier,<br /> own_id int,<br /> own_field nvarchar(20))<br /> <br /> declare @gd uniqueidentifier;<br /> set @gd = newid();<br /> <br /> insert into @head1 (head_id) values (@gd)<br /> insert into @sub1 (head_id,own_id,own_field) values (@gd,10,'Sub1 field')<br /> insert into @sub2 (head_id,own_id,own_field) values (@gd,11,'Sub2 field')<br /> insert into @unrelated (head_id,own_id,own_field) values (@gd,100,'another field')<br /> <br /> <br /> select alldata.* from<br /> (select head.head_id<br /> ,(<br /> select * from <br /> (<br /> select sub1.own_id,sub1.own_field <br /> from @sub1 sub1 <br /> where sub1.head_id = head.head_id<br /> union all <br /> select sub2.own_id,sub2.own_field <br /> from @sub2 sub2 <br /> where sub2.head_id = head.head_id<br /> ) tmp for xml path('sub'), type ) sub<br /> <br /> ,(select unrelated.own_id,unrelated.own_field <br /> from @unrelated unrelated where unrelated.head_id = head.head_id <br /> for xml path('unrelated'),type <br /> ) unrelated<br /> from @head1 head <br /> ) alldata for xml auto,root('master')