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
반응형
'IT_Web > Oracle' 카테고리의 다른 글
오라클 한번에 여러 테이블 데이터 삽입, oracle INSERT ALL하기 (0) | 2022.07.11 |
---|---|
Oracle - 카티시안(Cartesian) 곱을 이용한 조인 - 고정된 양식 출력 (0) | 2020.05.28 |
Oracle - 날짜 빼고 더하는 계산 함수 (0) | 2020.05.26 |
Oracle - 선수금 월별 매출 처리 쿼리 - 카테시안곱, CASE 문을 이용한 조인 방법 (0) | 2020.05.26 |
Oracle - 카테시안(Cartesian) 곱을 이용한 조인 – 나열된 컬럼을 여러 레코드로 생성 case문 (0) | 2020.05.22 |