oracle+xml嵌套,Oracle SQL生成嵌套的xml

我想通过在Oracle的PLSQL函数中只使用一个查询来获取嵌套

XML.

数据库(无法更改):

表’products_details’:

`attr_id` | `attribute` | `fk_parent_id`(Foreign key on `attr_id`)

-------------------------------------------------------------------------------

1 | name | null

3 | sizes | null

4 | size_women | 3

5 | size_man | 3

6 | size_dimension | 3

表’product_contents’:

`detail` | `value` | variation_number | `product_id` (doesnt matter)

-------------------------------------------------------------------------------

name | Tshirt | null | 1000

price | 14.99 | null | 1000

size_man | XL | 1 | 1000

size_women | L | 1 | 1000

size_dimesion | 21x25cm | 1 | 1000

size_man | M | 2 | 1000

size_women | S | 2 | 1000

size_dimesion | 14x16cm | 2 | 1000

...

正如您所看到的,每种产品只有一些选项(名称,价格),但也有一些选项(size_man,size_woman ……)是变体,每种产品可以存在多次.

我想要的是一个XML:

Tshirt

14.99

XL

L

...

M

S

到目前为止我尝试过的(当然不是真的有效):

SELECT

(

XMLELEMENT( "attribute",

XMLATTRIBUTES(pc.detail as "detail"),

(SELECT XMLAGG

(

XMLELEMENT("row", XMLATTRIBUTES(pc.variant_number as "variation_number") )

)

FROM product_contents pc

JOIN product_details pd ON pc.detail = pd.attribute and pc.product_id = '1000'

WHERE pd.fk_parent_id = pd.ID

)

).getClobVal() CONTENT

FROM product_details pd

pd.fk_parent_id is null

order by pd.attribute;

我怎么能用一个查询来做到这一点?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值