SSISO Community

시소당

Outer join



Outer join : Syntax
  정상적으로 조인 조건을 만족하지 못하는 행들을 보기위해 Outer join을 사용한다.
  Outer join 연산자는 "(+)"이다.
  조인시킬 값이 없는 조인측에 "(+)"를 위치 시킨다.

Outer Join
행인 조건을 만족하지 않을시 해당 행은 질의결과에 나타나지 않는다.
예를 들자면 S_EMP와 S_CUSTOMER 테이블의 equijoin에서 Sweet Rock Sports사는 이 고객에 대해 담당 영업사원이 없기 때문에 결과에 나타나지 않는다.
Outer join 연산자를 조인 조건에 사용시 조인조건을 만족하지 않는 행들도 결과에 나타날 수 있다.
그 연산자는 괄호로 묶인 플러스 기호(+)이며 정보가 부족한 조인측에 위치한다.
(+)연산자는 한 개 이상의 NULL 행을 생성하고 정보가 충분한 테이블의 한 개 이상의 행들이 이런 NULL 행에 조인된다.

Syntax

       SELECT
       FROM
       WHERE
table.column, table.column
table1.table2
table1.column = table2.column(+);
또는
       SELECT
       FROM
       WHERE
table.column, table.column
table1.table2
table1.column(+) = table2.column;

여기서,
table.column=
table1.table2

(+)


테이블들을 함께 묶는(관련시키는) 조건이다.


Outer join 기호이다. 이 기호는 WHERE절 조건의 어느측에
올 수 있으나 양측 모두에는 올 수 없다.
Outer join 연산자를 일치하는 행이 없는 테이블쪽에 두라.


Outer join : 예
모든 고객에 대해 담당 영업사원이 없다할지라도 영업사원 이름과 고객 이름을 출력한다.
Outer join 연산자는 표현식의 한 편에만 올 수 있다.
Outer join을 포함하는 조건은
   -IN 연산자를 사용할 수 없다.
   -OR 연산자에 의해 다른하나의 조건에 연결될 수 없다.

    ♠ 질의 예제 :모든 고객에 대해 담당 영업사원 이름과 사번 및 고객 이름을 출력하라.
                          이때 고객을 담당하는 담당 영업사원이 없더라도 고객 이름을 출력하도록 하라.



     
    SQL> SELECT       e.last_name, e.id, c.name
     2 FROM           s_emp e, s_customer c
        3    WHERE         e.id  (+)  =  c.sales_rep_id
        4    ORDER BY    e.id:

    Outer join의 제약사항
    Outer join은 표현식의 한 측에만 올수 있는데 정보가 부재한 쪽에 둔다. 다른 테이블의 어떠한 column과도 일치하지 않는 한 테이블의 행을 돌려준다.
    Outer join을 포함하는 조건은 IN 연산자를 사용할 수가 없고 OR 연산자에 의해 다른 하나의 조건에 연결 불가능하다.

    1141 view

    4.0 stars