2012-06-06 2 views
2

outer select 행 변수를 oracle의 내부 select로 전달하는 방법은 다음과 같습니다 (다른 외부 조인은 제거되었습니다.)이 쿼리는 1 번로드됩니다. 응용 프로그램의 수명). 이 쿼리는오라클의 outer select 행 변수를 내부 선택에 전달

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