728x90
반응형

카테시안(Cartesian) 곱을 이용한 조인 – 관계가 없는 테이블간의 조인

커서를 선언하여 오픈한 후 루프 내에서 반복하여 패치를 하면서 복잡한 처리를 할 때 여러개의 상위테이블 정보를 참조해야 원하는 가공을 처리할 수 있는 경우가 있다고 하자 그렇게 처리되고 가공을 하고 상수값을 결합하여 실행 한 수 그 결과를 애플리케이션에 보내주는 작업들을 진행한다 이러한 데이터 베이스 호출(DBMS CALL)은 시스템 오버헤드의 주범이라고 할 수 있다

반복 수행되는 구문 내에 여러개의 SQL이 나열되어 있는 것은 가능한 피하는 것이 좋다

 

SELECT ename, job, sal, y.loc

FROM EMP x, DEPT y

WHERE x.empno=:emp_no

AND x.sal=:sal_no

AND y.dname(+) = :dname_no||substr(x.empno,0,0)

 

조인할 때 어느 한 집합만 공집합이 되더라도 전체가 공집합이 되어버리므로 다른 성공한 집합까지 실패하게 된다

그래서 y.dame(+) = :dname_no만 작성하게되면 해당하는 dame가 null이거나 만족하는 값이 없으면 오류가 난다

위와 같은 방법으로 조인하면 DEPTNO에 해당하는 dame가 null이거나 만족하는 값이 없더라도 SUBSTR의 연산값으로 NULL이 출력된다

OUTER-JOIN은 반드시 어떤 집합과 연결을 할 때만 의미가 있다

728x90
반응형

+ Recent posts

Powered by Tistory, Designed by wallel