OUTER 조인 연산자 관련 질문드립니다. ~~ 0 7 4,988

by 손님 OUTER 조인 [2012.05.10 09:29:33]


안녕하세요. 오라클을 한창 공부중인

왕초보입니다.

책에서 보면 

아웃터조인의 where절에서 =, and 연산자만 사용가능하다고 말을 하는데 

그 이유가 무엇인지 궁금합니다 ㅠㅜ 

검색을 해도 잘 안나오내요 ㅠㅜ 

부탁드립니다. 고수님들
by 현 [2012.05.10 10:25:39]

 어떤 책에서 아우터 조인일 때
where 절에서 =, and 연산자만  사용가능하다고 나왔나요?

like,in, > 등 사용 가능합니다.

다음은 그것들을 사용한 예제 입니다.

select * from emp e, dept d
where e.deptno = d.deptno(+)
and  D.DNAME(+) like 'a%';


select * from emp e, dept d
where e.deptno = d.deptno(+)
and  D.DNAME(+) in ( 'ACCOUNTING','SALES') ;

select * from emp e, dept d
where e.deptno = d.deptno(+)
and  D.DNAME(+) > 'SALES' ;


select * from emp e, dept d
where e.deptno > d.deptno(+);


by 마농 [2012.05.10 11:11:26]

= 과 And 만 사용된다고 한정짓는것은 잘못이구요.
아우터 조인에서는 In 절과 Or 절 사용에 제약이 있습니다.
따라서 현님께서 제시하신 쿼리중 두번째 In 을 사용한 쿼리는 에러가 납니다.
ORA-01719 : 포괄 조인 운영 (+)는 OR 또는 IN 의 연산을 허용하지 않습니다.
또 다른 제약사항으로는 두개 테이블과 동시 아우터 조인이 허용되지 않습니다.
  FROM emp a, emp b, dept d
 WHERE a.deptno = d.deptno(+)
   AND b.deptno = d.deptno(+)
ORA-01417 : 하나의 테이블은 하나의 다른 테이블과 포괄 조인할 수 있습니다.


by 마농 [2012.05.10 11:13:40]
제약을 둔 이유는?... 글쎄요...
제약을 피해가는 방법은?
1. 인라인뷰로 1차 집합 가공 후 아우터 조인하는 방법
2. ANSI SQL 의 아우터 조인 방식을 사용하는 방법

by 손님 [2012.05.10 11:21:20]
10.2.0.5 부터는  OR 또는 IN 의 연산을 허용하는 것으로 알고 있습니다.

by 현 [2012.05.10 11:29:32]

마농님...

제 컴터에서 2번째 유형 에러 안납니다.....^^
버전은 11.2.0.1 입니다...

by 마농 [2012.05.10 12:41:30]

아! 11G부터는 두가지 제약이 모두 풀렸군요.


by 마농 [2012.05.10 12:47:33]

참고로 10.2.0.3 에서 두가지 유형 모두 에러 발생 확인 했습니다.

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