선배님들 질문드리겠습니다. 제가 작성하려는 쿼리는 아래 쿼리의 양식과 비슷합니다.
샘플로 적어서 틀릴 수 도 있으니 참고만 부탁드립니다.
제가 질문을 드리는 것은 아래쿼리에서 조인한 테이블 t1에서 select 안에 select의 조건을 넣어서 사용은 안되던데, 혹시 방법이 있을까요?
안된다면 다른 방법으로 해야하는지 궁금합니다.
select t1.seq, t1.emp_no, (select name from (select name, amt from emp_no = t1.emp_no) )
from tmp1 t1, tmp2 t2
where t1.seq = t2.seq
답변 달고 다시 읽어보니 조금 의미 전달이 잘 안 되었을 수 있겠네요.
예를 들어 아래와 같은 쿼리가 있다면 SELECT ( SELECT COL2 FROM ( SELECT COL2 FROM TBL2 B WHERE COL1 = A.COL1 ORDER BY COL2 DESC ) WHERE ROWNUM = 1 ) FSTVAL FROM TBL1 A A.COL1 이 B테이블 조건절로 들어갈 수가 없습니다.(2단계 서브쿼리) ->부적합한 식별자 오류 이 쿼리를 아래와 같이 바꿔주면 SELECT ( SELECT COL2 FROM ( SELECT COL1, COL2 FROM TBL2 ORDER BY COL2 DESC ) B WHERE B.COL1 = A.COL1 AND ROWNUM = 1 ) FSTVAL FROM TBL1 A WHERE B.COL1 = A.COL1 조건으로 인해 서브쿼리의 TBL2 안으로 A.COL1 조건이 침투할 수 있게 됩니다. 이때 TBL2 전체를 COL2로 DESC 소팅한 후 COL1 조건으로 필터하는 것이 아니라 TBL2를 A.COL1 조건으로 먼저 ACCESS할 수 있어 인덱스를 활용할 수 있다면 인덱스까지 사용 가능하게 됩니다.