2012-06-06 29 views
2

如何將一個外部選擇行變量傳遞給oracle中的內部選擇,這裏是一個示例查詢(其他外部連接已被刪除,該查詢將被加載1次應用程序的生命週期)。此查詢工作在oracle中傳遞一個外部選擇行變量給內部選擇

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」:無效的標識符

回答

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' 
5

您無法傳遞第二級SELECT的值。

例如 -

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

您可以從只適用於二級SELECT 1級SELECT值。 類似地,第二級SELECT中的值僅適用於第一級SELECT和第三級SELECT,但不能超過此值。

+0

是不是'它的其他方式呢? value2可在第一級選擇 – surajz

+1

這是對這種情況的正確答案,surajz最終取消了其中一個級別的原因 –

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