구분 값에 따라 조인 조건을 다르게 해서 조회 하고싶습니다. 0 6 2,537

by DONKEY #동등조인 #외부조인 [2016.07.11 14:04:30]


안녕하세요 회원님들 폭염으로 고생들 많으 십니다.

오늘 부탁드리고 싶은 질문은 구분값에 따라 어떨때는 동등조인을, 어떨때는 외부조인(+)을 걸고싶은데

어떻게 해야되는지 궁금해서 질문 올리게 되었습니다.

예를들어 파라미터로 Y가 프로시져로 전달 되었을때는 외부조인(+)을

파라미터로 N이 프로시져로 전달 되었을 경우에는 동등조인을 하고싶습니다.

이걸 WHERE절에서 처리하려면 어떻게 해야되나요?

WHERE절에서 DECODE나 CASE WHEN을 사용하여 해보니 ORA-01416 : 두 개의 테이블을 OUTER-JOIN 할 수 없습니다.

라는 에러가 뜹니다...

부탁 드리겠습니다!

by 랑에1 [2016.07.11 14:20:35]

select 아우터조인

where :파라미터 = 'Y'

union all

select 그냥조인

where :파라미터 = 'N'

보통은 이게 젤 쉬운 방법이지요~


by DONKEY [2016.07.11 14:31:54]

랑에1님 정말 감사드립니다!


by 마농 [2016.07.11 15:22:30]
SELECT d.deptno, d.dname
     , e.empno, e.ename
  FROM dept d
     , emp  e
 WHERE d.deptno = e.deptno(+)
   AND NVL2(e.deptno, 'N', 'Y') <= :v_yn
;

 


by DONKEY [2016.07.11 20:19:15]

마농님 뒤늦게 봤습니다 답변 감사드립니다!


by 우리집아찌 [2016.07.12 13:34:29]

다이나믹 쿼리를 사용하는 방법도 있습니다.

http://www.gurubee.net/lecture/1720

 


by DONKEY [2016.07.15 16:58:35]

아찌님 감사합니다!

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입