複数のテーブルのデータを1つのテーブルに保存したい
table A (
p, q,
PRIMARY KEY (p,q)
)
table B (
p, m, n,
PRIMARY KEY (p,m,n)
)
table output(
p,
xml
)
出力は次のようになります
テーブルAの場合
-------------------------------
| p | xml |
---------------------------------
|value of p | <q>some value</q> |
-------------------------------
テーブルBの場合
-----------------------------------------------
| p | xml |
------------------------------------------------
|value of p | <m>some value</m><n>some data</n> |
-----------------------------------------------
これは、このクエリによって実現できます
SELECT *
FROM Students s
CROSS APPLY
(
SELECT
(
SELECT *
FROM Students t
WHERE t.DisplayName = s.DisplayName
FOR XML RAW
) x1
)x
ただし、SQLを十分にジェネリックにして、任意のテーブル名を指定して上記の出力を取得できるようにします。
内部結合の問題は、クエリが一般的ではないことです。