Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 子查询中的Oracle标识符无效_Sql_Xml_Oracle_Oracle11g - Fatal编程技术网

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不关联嵌套了多个级别的子查询。单行子查询返回多行