3
親テーブルと2つ以上の子テーブルを持つデータベーススキーマを指定します。たとえば:SQL Serverで複数テーブルの結合からXMLを作成する
それは、次のXMLを出力for 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>
コンタクトテーブルまたはアドレステーブルのいずれかに1回の左結合を使用すると、後の処理の一部が生成されますが、2回目の結合を追加すると、間違って開始されます。私が探している結果を達成するために使用できる別のテクニックがありますか?
FYI ...私は信じている "XMLパスは、" SQL 2008 – David
@デビッド必要です:いいえ、それは2005' '上で動作します。 http://msdn.microsoft.com/en-us/library/ms189885(SQL.90).aspx – Quassnoi
ありがとう@Quassnoi、それは治療を働く! –