본문 바로가기
DB/SQL

Equi Join /Non-Equi Join

by 꼬바리 2021. 3. 16.

Equi Join 

 
  기존 테이블과 조인 테이블에서 공통 칼럼을 '='(equal) 비교하여,

같은 값을 가지는 행을 연결하고 결과를 생성하는 조인 방법입니다.

가장 많이 사용되는 조인 방법이라고도 합니다.


 학생 테이블과 부서 테이블을 EQUI JOIN하여 이름, 학과 번호, 소속 학과 이름을 출력

 

 

 학생 테이블과 학과 테이블, 교수 테이블을 JOIN 하여 학생의 이름과 학과이름, 지도교수 이름을 출력
 => 세 개의 테이블을 조인하는 경우, 기준이 되는 테이블이 중요합니다. 

      여기서 기준이 되는 테이블은 학생 테이블이겠죠? 학생에 대한 모든 정보가 주된 목적이니까요!

      세 개의 테이블을 어떻게 묶느냐에 따라 결과가 달라지기도 하니 기준을 잘 정해야합니다.
      그 후 각각 테이블의 연결고리를 잘 확인합니다.

      STUDENT 테이블과 DEPARTMENT 테이블은 DEPTNO 컬럼을 통해 연결,

      STUDENT 테이블과 PROFESSOR 테이블은 PROFNO 컬럼을 통해 연결되었죠?

      JOIN 된 테이블은 3 개니까 조인 조건은 2 개가 된 것이고요!

 


 
STUDENT, DEPARTMENT, EXAM_01 테이블을 사용하여 학생 이름, 제1전공명, 시험 점수 출력

=> 여기서도 STUDENT 테이블이 기준이 됩니다.

     STUDENT 테이블과 DEPARTMENT 테이블은 DEPTNO 컬럼을 통해 연결,

     STUDENT 테이블과 EXAM_01 테이블은 STUDNO 컬럼을 통해 연결됩니다.

     분리되어있는 테이블에서 연결점을 찾는게 중요합니다!

 


 

Non-Equi Join 

 

Equi Join 은 공통 칼럼을 '='(equal) 비교한다면,

Non-Equi Join  '=' 조건을 사용하지 않고 '대소비교' 를 하는 경우 사용하는 조인입니다.

 

바로 적용해보죠!

 

GOGAK 테이블과 GIFT 테이블을 사용하여 각 고객의 포인트별로 받아갈 수 있는 가장 좋은 상품명 출력

=> between A and B 는 'A' 이상 'B' 이하니까 대소비교겠죠?

   고객의 POINT 점수로 받을 수 있는 가장 좋은 상품을 출력해주게됩니다.

 

 

<고객 테이블>                         

<상품 테이블>

<결과>

 

 

비슷지만, 이번에는 받아갈 수 있는 모든 상품을 출력해볼까요?

GOGAK 테이블과 GIFT 테이블을 사용하여 각 고객의 포인트별로 받아갈 수 있는 모든 상품명 출력

=> order by 절에서 컬럼명 말고 컬럼의 순서를 사용해도 가능합니다.

    여기서 1은 고객명이니 고객명 기준으로 정렬이겠죠?

 

<고객 테이블>                                        

<상품 테이블>

<결과>

 

 

 

이번에도 약간 비슷하지만, 상품을 제공하는 주최측 기준으로 보면,

GOGAK 테이블과 GIFT 테이블을 사용하여 각 상품별 최대 기대 수량 출력

=> 문제 그대로 바로 하려하지 말고, 한 단계씩, 중간 결과값을 출력해보면서 차근차근 해보면 쉬울꺼에요!

     group by 를 바로 사용하려고하지 말고, 먼저 출력되는 값들을 확인한 후, 그룹으로 묶어보세요!

     group by 로 고객의 이름을 그룹지은 이유는, 상품을 받을 수 있는 고객 수를 count 하기 위함입니다.

 

<고객 테이블>                                 

<상품 테이블>

<결과>

 


다른 테이블을 사용해보면,

STUDENT, EXAM_01, HAKJUM 테이블을 사용하여 학생의 학점을 구하기

 

<학생 테이블> 

           

<학생 점수 테이블>                              

 

<학점 테이블>            

<결과>



출처: https://data-make.tistory.com/24 [Data Makes Our Future]

728x90
반응형

댓글