繁体   English   中英

子查询中的Oracle无效标识符

[英]Oracle invalid identifier in subquery

我有这个查询:

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>

餐桌product

id | variant | name
_________________________
1  | 1       | Example1
2  | 1       | Example2
3  | 2       | Example3
4  | 3       | Example4
5  | 3       | Example5

...

SQLFIDDLE: http ://www.sqlfiddle.com/#!4 / e91a6 /2

我发现,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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM