3
給定一個具有父表和兩個或多個子表的數據庫模式。例如:從SQL Server中的多表連接生成XML
是否有可能創建一個查詢,使用for xml
聲明,輸出下面的XML:
<?xml version="1.0"?>
<person>
<name>Joe Bloggs</name>
<age>25</age>
<address>
<streetAddress>123 Test Street</streetAddress>
<town>Example Town</town>
<postcode>A12 3BC</postcode>
</address>
<address>
<streetAddress>124 Test Street</streetAddress>
<town>Example Town</town>
<postcode>A12 3BC</postcode>
</address>
<contact>
<type>Home Phone</type>
<value></value>
</contact>
<contact>
<type>Work Phone</type>
<value>01987 654321</value>
</contact>
<contact>
<type>Email Address</type>
<value>[email protected]</value>
</contact>
</person>
我的初步嘗試:
select person.name, person.age,
address.streetAddress, address.town, address.postcode,
contact.type, contact.value
from Person as person
left join Address as address on person.PersonID = address.PersonID
left join Contact as contact on person.PersonID = contact.PersonID
where person.PersonID = 1
for xml auto, elements
墓內這個結果是所有聯繫人和地址的組合都被輸出:
<?xml version="1.0" encoding="utf-8"?>
<person>
<name>Joe Bloggs</name>
<age>25</age>
<address>
<streetAddress>123 Test Street</streetAddress>
<town>Example Town</town>
<postcode>A12 3BC</postcode>
<contact>
<type>Home Phone</type>
<value></value>
</contact>
<contact>
<type>Work Phone</type>
<value>01987 654321</value>
</contact>
<contact>
<type>Email Address</type>
<value>[email protected]</value>
</contact>
</address>
<address>
<streetAddress>124 Test Street</streetAddress>
<town>Example Town</town>
<postcode>A32 1BC</postcode>
<contact>
<type>Home Phone</type>
<value></value>
</contact>
<contact>
<type>Work Phone</type>
<value>01987 654321</value>
</contact>
<contact>
<type>Email Address</type>
<value>[email protected]</value>
</contact>
</address>
</person>
使用單一的左連接到無論是聯繫人或地址表產生的就是我以後的部分,但加入第二個連接後,它開始出問題。是否有另一種技術可以用來實現我期待的結果?
僅供參考......我相信 「XML路徑」 需要SQL 2008 – David 2009-07-31 16:38:53