[英]Exporting SQL table as XML
我在 portgres 中有三個表,分別是 Customer、Download、Games,其中包含以下字段,
|-----------|
| Customer |
|-----------|
| cust_ID |
|-----------|
| name |
|-----------|
| country |
|-----------|
|-----------|
| Download |
|-----------|
| cust_ID |
|-----------|
| game_ID |
|-----------|
| version |
|-----------|
|-----------|
| Games |
|-----------|
| game_ID |
|-----------|
| name |
|-----------|
| price |
|-----------|
我需要將表數據導出為 xml 格式,如下所示,
<customers>
<customer>
<id>1</id>
<name>value</name>
<country>value</country>
<games>
<game>
<game_id>1</game_id>
<name>value</name>
<price>value</price>
<download_ver>value</download_ver>
</game>
<game>
<game_id>3</game_id>
<name>value</name>
<price>value</price>
<download_ver>value</download_ver>
</game>
</games>
</customer>
我將在客戶表下有多個客戶實體。 節點下的列來自由 game_id 字段鏈接的下載表。
select XMLELEMENT(name "warehouses",
XMLAGG(
XMLELEMENT(name "warehouse",
XMLFOREST(
w.w_id,
w.w_name,
w.w_country))))
FROM warehouse w
上面的代碼可以查詢倉庫節點,但是如何合並游戲節點呢?
SELECT
xmlelement(name customers,
xmlagg(
xmlelement(name customer,
xmlforest(cust_id, name, country, games)
)
)
)
FROM (
SELECT
c.cust_id,
c.name,
c.country,
xmlelement(name games,
xmlagg(
xmlelement(name game,
xmlforest(g.game_id, g.name, price)
)
)
) as games
FROM
customer c
JOIN
download d ON (c.cust_id = d.cust_id)
JOIN
games g ON (d.game_id = g.game_id)
GROUP BY c.cust_id, c.name, c.country
ORDER BY c.cust_id
) s
您需要兩個步驟,因為有兩個聚合:
在子查詢中,我們使用xmlagg
將每個客戶的游戲聚合到一個xmlelement
"games" 中。
在外部查詢中,我們將所有客戶(以及他們已經聚合的游戲)聚合到一個xmlelement
“客戶”中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.