2015-12-04

[DB] 使用 SQL 將多筆資料轉成一筆 XML 資料

在 Master、Detail 資料結構中,如果要在 Master 清單中同時也顯示出 Detail 的資料,通常做法是先抓出 Master 資料,跑迴圈再查詢 Detail 抓出資料,也就是要分兩次 SQL 來進行。



如果只想用一個 SQL 就同時抓出 Master 和 Detail 資料,就會想用子查詢的做法,而當 Master 對應的 Detail 資料回傳不只一筆時,就會出現如下錯誤:



這時可以使用 FOR XML Path 來解決這個問題,它可以將子查詢 Detail 回傳的多筆資料轉成一筆 XML 格式,如此就沒有回傳不只一筆資料的問題了:



以上這個範例中,Path('') 是指不加入任何的 XML tag,單純將欄位組合成字串就好,預設不加東西的結果是會將資料加上 <row> tag 的:



P.S:Path 只是其中一種用法,詳細可參考Microsoft MSDN



參考來源:黃昏的甘蔗

沒有留言:

張貼留言