이 글은 MySQL 다중 내부 조인(INNER JOIN 여러개) 설명, 문법, 예시를 담고 있습니다.
MySQL INNER JOIN(내부 조인)
제 JOIN 글에서 두 개 이상, 여러 테이블을 결합하는 것이 조인이라고 했습니다.
그중 INNER JOIN은 교집합을 의미하며, 테이블들 간 교집합을 기준으로 한 테이블처럼 결합됩니다.
*관련 글
MySQL INNER JOIN(내부 조인) 다양한 사용 방법과 예시
MySQL 관계형 데이터베이스(RDB), 테이블 JOIN 기초 설명 예시
MySQL 다중 내부 조인(INNER JOIN 여러 개)
그렇다면 다중 내부 조인은 어떻게 되는 것일까요?
먼저 A와 B테이블의 공통키(교집합)를 바탕으로 결합하여,
두 테이블의 데이터를 한 번에 보여주는 하나의 테이블(C)이 생깁니다.
이후 A, B와 공통키를 갖는 세 번째 테이블 D를 결합 산출물 C와 결합합니다.
이로써 공통키를 중심으로, A+B+D인 하나의 테이블이 최종 산출물로 보입니다.
물론 최종 산출물(A+B+D)만 보일 뿐, 설명드린 과정이 눈에 보이지는 않습니다.
다중 내부 조인(INNER JOIN 여러 개) 문법
다중 내부 조인 문법은 다음처럼 INNER JOIN ON... INNER JOIN ON...으로 입력합니다.
이로써 3개, 4개... 여러 개의 테이블 결합이 가능합니다.
SELECT * FROM 테이블1
INNER JOIN 테이블2
ON 테이블1.공통키=테이블2.공통키
INNER JOIN 테이블3
ON 테이블1.공통키=테이블3.공통키;
WHERE 조건절에 AND를 입력해서 여러 테이블 결합도 가능합니다.
SELECT *
FROM 테이블1, 테이블2, 테이블3
WHERE 테이블1.공통키=테이블2.공통키 AND 테이블1.공통키=테이블3.공통키;
별칭도 쓸 수도 있습니다. 이는 AS 입력 혹은 띄어쓰기로 가능합니다.
참고로 3번째 테이블 내부 조인 시 '테이블1.공통키=테이블3.공통키' 뿐만 아니라,
'테이블2.공통키=테이블3.공통키'도 쓸 수 있습니다.
SELECT * FROM 테이블1 별칭1
INNER JOIN 테이블2 AS 별칭2
ON 별칭1.공통키=별칭2.공통키
INNER JOIN 테이블3 별칭3
ON 별칭2. 공통키=별칭3.공통키;
다중 내부 조인 예시
공통키(ID)를 갖는 세 개의 테이블(연락처, 주소, 제품주문번호)이 있습니다.
또한 두 테이블(주소, 제품주문번호)은 '주소2'도 공통으로 가집니다.
연락처 | |
ID | 번호 |
10 | 01011112222 |
52 | 01033334444 |
주소 | ||
ID | 주소1 | 주소2 |
10 | 서울시 종로구 | 12345 |
52 | 고양시 덕양구 | 52431 |
827 | 서울시 강남구 | 67891 |
제품주문번호 | ||
ID | 주문번호 | 주소2 |
10 | F1 | 12345 |
52 | F9 | 52431 |
827 | F9 | 67891 |
SELECT a.ID, a.번호, b.주소1, b.주소2, c.주문번호
FROM 연락처 a
INNER JOIN 주소 b ON a.ID = b.ID
INNER JOIN 주문번호 c ON b.주소2 = c.주소2;
SELECT a.ID, a.번호, b.주소1, b.주소2, c주문번호
FROM 연락처 a, 주소 b, 주문번호 c
WHERE a.ID = b.ID AND b.주소2 = c.주소2;
산출물은 다음과 같습니다.
ID | 번호 | 주소1 | 주소2 | 주문번호 |
10 | 01011112222 | 서울시 종로구 | 12345 | F1 |
52 | 01033334444 | 고양시 덕양구 | 52431 | F9 |
'SQL > MySQL' 카테고리의 다른 글
MySQL 자주 쓰는 숫자 데이터 타입(Numeric Data Types) 간단 정리 (0) | 2023.09.18 |
---|---|
MySQL 외부 조인(LEFT, RIGHT, FULL JOIN, UNION, UNION ALL) 문법 예시 (0) | 2023.09.15 |
MySQL INNER JOIN(내부 조인) 다양한 문법과 예시 (0) | 2023.09.12 |
MySQL 집계 함수, GROUP BY와 HAVING 사용 방법 (0) | 2023.09.11 |
MySQL COUNT 함수 특정 값 개수 세기 (0) | 2023.09.08 |