JOIN

K·2022년 5월 28일
0

SQL BOOSTER

목록 보기
2/12

1. INNER JOIN

  • 가장 기본이되는 조인
  • JOIN은 항상 1:1로 이루어진다 > 여러테이블이 있어도 순차적 으로 진행됨
  • 접근순서나 처리순서는 조인결과에 영향을 주징낳는다.
  • 1:1, 1:M, M:M이 발생할수있으면 M:M은대게 잘못된 설계나 조인이다.

2. OUTER JOIN

  • 기준데이터 집합과 참조데이터 집합
  • 기준데이터 집합은 조인조건에 만족하지 않아도 모두 결과에 포함
  • 참조데이터 집합은 조인조건에 만족하지않으면 NULL로 채워져 결과에 출력
  • OUTER JOIN의 참조데이터 집합에 필터를 걸기위해서는
    필터조건에도 (+)를 추가해야한다.

    T1.CUS_ID = T2.CUS_ID(+)
    T2.ELV_DT(+) = TO_DATE('20170201','YYYYMMDD')

  • 1개의 참조 데이터가 2개이상의 기준데이터 집합을 동시에 가질수 없다.
    아래예제의 문제를 해결하려면 T1과 T2를 인라인뷰에서 조인한다음 T3를 OUTER JOIN하면된다.

    AND T3.CUS_ID(+) = T1.CUS_ID
    AND T3.ITM_ID(+) = T2.ITM_ID

  • 참조테이블과 JOIN을하려면 OUTER JOIN을 해야 값이 정상적으로 출력된다.
    아래예제는 T1이 기준, T2가 참조인데 T3와 T2를 INNER JOIN하는 바람에 정상적으로 나와야할 데이터까지 나오지않게된다. T3.ORD_SEQ(+)를 붙여줘야 원하는 결과가 나온다.

    AND T1.CUS_ID = T2.CUS_ID(+)
    AND T3.ORD_SEQ = T2.ORD_SEQ

    3. CARTESIAN-JOIN

  • 조인조건이 없는 조인
  • M*N의 건수가 집계됨.
  • 잘못 사용하면 시스템장애가 발생할수있음(많은 데이터 건수등으로인해)
  • 활용예
    • 특정범위 데이터 생성시 (1~5월 사용자별 집계등을 표현할때, 1~5월&사용자집합 구성시)
    • 테스트 데이터 생성시
profile
늙어가면서 기억을 남기는 개발자

0개의 댓글