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