2

如何在 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": invalid identifier

4

3 回答 3

5

您不能传递 2nd level 的值SELECT

例如 -

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

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

于 2012-06-06T21:24:07.353 回答
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'
于 2012-06-12T19:04:17.427 回答
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
于 2012-06-06T21:34:47.473 回答