Sql 子查询中的Oracle标识符无效
我有一个问题:Sql 子查询中的Oracle标识符无效,sql,xml,oracle,oracle11g,Sql,Xml,Oracle,Oracle11g,我有一个问题: SELECT XMLELEMENT("row", XMLATTRIBUTES(productMain.variant as "order"), (SELECT XMLELEMENT("attribute", XMLATTRIBUTES(product.id as "id") ) FROM product where product.variant = productMain.variant ) ) FROM
SELECT
XMLELEMENT("row", XMLATTRIBUTES(productMain.variant as "order"),
(SELECT XMLELEMENT("attribute", XMLATTRIBUTES(product.id as "id") )
FROM product where product.variant = productMain.variant
)
)
FROM
(SELECT
DISTINCT product.variant
FROM
product
WHERE
product.fk_parent = 12345) productMain
我得到一个错误“无效标识符productMain.variant
”
预期结果:
<row order="1">
<attribute name="Example1"/>
<attribute name="Example2"/>
...
</row>
<row order="2">
...
</row>
id | variant | name
_________________________
1 | 1 | Example1
2 | 1 | Example2
3 | 2 | Example3
4 | 3 | Example4
5 | 3 | Example5
SQLFIDDLE:
我发现,Oracle不会将嵌套在多个级别的子查询关联起来
如何仍然获得我想要的结果?解决方案:
SELECT
XMLELEMENT("row", XMLATTRIBUTES(productMain.variant as "order"),
(SELECT XMLELEMENT("attribute", XMLATTRIBUTES(product.id as "id") )
FROM product,
(SELECT DISTINCT variant FROM
product
WHERE fk_parent = 12345) as productMain
where product.variant = productMain.variant
)
)
FROM
(SELECT
DISTINCT variant
FROM
product
WHERE
fk_parent = 12345) productMain
SELECT
XMLELEMENT("row", XMLATTRIBUTES(productMain.variant as "order"),
(
SELECT
XMLAGG(XMLELEMENT("attribute",XMLATTRIBUTES(product.name as "name"),product.variant)) FROM product
where product.fk_parent = 12345
and product.variant = productmain.variant
)
).getClobVal()
FROM
(SELECT
DISTINCT product.variant
FROM
product
WHERE
product.fk_parent = 12345) productMain;
您的表名和别名非常混乱,请修复。抱歉@Colin'tHart。现在已修复。差不多了,请也修复错误消息:是
product.variant
还是productMain.variant
在那里?是的,它的“productMain.variant”。它不知道另一个子选择的值。Oracle不关联嵌套了多个级别的子查询。单行子查询返回多行