【问题标题】:pass an outer selects row variable to inner select in oracle将外部选择行变量传递给oracle中的内部选择
【发布时间】:2012-06-06 21:18:19
【问题描述】:

如何在 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": 标识符无效

【问题讨论】:

    标签: sql oracle


    【解决方案1】:

    您不能传递第二级 SELECT 的值。

    例如-

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

    您可以将第一级SELECT 中的值仅用于第二级SELECT。 同样,第二级SELECT 中的值仅对第一级SELECT 可用,第三级SELECT 不能超出此范围。

    【讨论】:

    • 不是反过来吗? value2 在第一级选择中可用
    • 这是对这种情况的正确答案,surajz 最终删除了它工作的原因之一
    【解决方案2】:

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

    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'
    

    【讨论】:

      【解决方案3】:

      我认为我正确地阅读了您的 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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-09-15
        • 2011-10-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多