将一个外部选择行变量传递给oracle中的内部选择

时间:2012-06-06 21:18:19

标签: sql oracle

如何在oracle中将外部选择行变量传递给内部选择,这里是一个示例查询(其他外部联接已被删除。此查询将在应用程序的生命周期中加载1次)。此查询有效

select  l5.HIERARCHY_ID,
    (select wm_concat(isbn) isbns from (
        select  op.isbn from oproduct op
        LEFT JOIN  assignment ha on  op.r.reference = ha.reference
        where ha.hierarchy_id =  '100589'))isbns 
from level l5 where l5.gid = '1007500000078694'

但是当我更改内部选择的where子句

where ha.hierarchy_id =  '100589'))isbns 
to
where ha.hierarchy_id =  l5.HIERARCHY_ID))isbns  

我收到以下错误 ORA-00904:“L5”。“HIERARCHY_ID”:标识符无效

3 个答案:

答案 0 :(得分:5)

您无法传递第二级SELECT的值。

例如 -

SELECT value1  -- 1st level select
FROM (
      SELECT value2  -- 2nd level select
      FROM ( 
            SELECT value3  -- 3rd level select.

您可以将第一级SELECT的值仅用于第二级SELECT。 同样,第二级SELECT中的值仅适用于第一级SELECT和第三级SELECT,不在此之外。

答案 1 :(得分:1)

我做了类似这样的事情来解决这个问题。有一个不必要的选择

select  
  l5.HIERARCHY_ID,
  (
    select  
      wm_concat(op.isbn) 
    from 
      oproduct op
      LEFT JOIN assignment ha on op.r.reference = ha.reference
    where ha.hierarchy_id =  l5.HIERARCHY_ID
  ) ISBNS
from 
  level l5 
where 
  l5.gid = '1007500000078694'

答案 2 :(得分:0)

我认为我正在正确地阅读您的SQL - 当层次结构ID匹配时,您想要外连接吗?

SELECT
    l5.hierarchy_id,
    op.isbns
FROM
    LEVEL l5
    LEFT OUTER JOIN
        (SELECT 
            wm_concat (op.isbn) isbns,
            ha.hierarch_id
        FROM
            oproduct op
            LEFT JOIN
                assignment ha
            ON op.reference = ha.reference) op
    ON l5.gid = op.hierarchy_id