我想構建一個SQL查詢或過程來從幾個表中構建一個複雜的XML結果。這是在SQL Server 2008 R2中。SQL和XML和複雜的JOIN
所以我想返回XML是沿
<requests>
<request>
<field one/>
<field two/>
<person>
<personinfo/>
<roleinfo/>
<addrinfo/>
<!-- don't want <item> elements here -->
</person>
<person>
<personinfo/>
<roleinfo/>
<addrinfo/>
<!-- don't want <item> elements here -->
</person>
<item><iteminfo/></item> <- i want <item> elements to show up here
<item><iteminfo/></item>
<item><iteminfo/></item>
</request>
<request>
...
</request>
<requests>
行我可以得到它沒有<item/>
行工作,但是當我嘗試將<item/>
行加入到最終的結果,它加入他們到<person/>
元素而不是<request/>
元素。這可能是我對理解或使用連接的一個問題,但我現在正在踩水。
創建不帶<item/>
元素的XML的SQL看起來如下所示。
select actor-fields, person-fields, role-fields, address-fields
into #tempperson from actor
left join person on actor.personid = person.personid
left join address on address.personid = person.personid
left join role on role.personid = person.personid
order by personid
select request-fields
into #tempreq from request
order by requestid
select *
from #tempreq as request
left join #tempperson as person on person.requestid = request.requestid
order by request.requestid
for xml auto, root('requests'), elements;
我需要的是SQL將返回所需的XML。如果我在上面的SQL中添加另一個連接,它會在<person/>
節點內添加<item/>
節點,這不是我想要的。
我已閱讀過有關XML AUTO的文章,但這些示例不會返回像這樣的嵌套結構。也許我正在談論這一切都是錯誤的。有關於此的任何指導?
你在哪裏選擇項目? – Byron 2013-03-15 21:58:09
對不起@Byron,是的,我在那裏的SQL從我工作的(沒有項目)中得到了。由於我沒有適用於物品的SQL,因此我沒有包含任何物品。我希望,我會編輯更清晰的問題。謝謝。 – 2013-03-16 19:11:39