다중 테이블 Join
하나의 SQL 쿼리에서 JOIN
을 여러 번 사용하면 세 개 이상의 테이블을 한 번에 결합할 수 있습니다.
정규화된 데이터베이스에서는 관련 데이터를 서로 다른 테이블로 나누어 저장하기 때문에 다중 Join이 자주 사용됩니다.
참고: 대부분의 SQL 엔진에서
JOIN
을 별도로 지정하지 않으면 기본값은INNER JOIN
입니다.
다중 테이블 Join 문법
다중 테이블 JOIN 문법
SELECT ...
FROM table1
JOIN table2 ON ...
JOIN table3 ON ...;
- 각
JOIN
은 새로운 테이블을 결과 집합에 추가합니다. - 각
ON
절에서 테이블 간 관계를 명확히 정의해야 합니다.
다중 테이블 Join 예시
다음과 같은 테이블을 예로 들어 보겠습니다.
students
student_id | name |
---|---|
1 | 지민 |
2 | 서연 |
3 | 민재 |
4 | 나현 |
5 | 도윤 |
enrollments
student_id | class_id |
---|---|
1 | A1 |
2 | A2 |
3 | A1 |
4 | A3 |
5 | A2 |
classes
class_id | class_name |
---|---|
A1 | 수학 |
A2 | 한국사 |
A3 | 물리 |
A4 | 화학 |
아래 쿼리는 세 개의 테이블을 다중 Join으로 연결합니다.
테이블 3개 Join
SELECT students.name, classes.class_name
FROM students
JOIN enrollments ON students.student_id = enrollments.student_id
JOIN classes ON enrollments.class_id = classes.class_id;
쿼리 결과
name | class_name |
---|---|
지민 | 수학 |
서연 | 한국사 |
민재 | 수학 |
나현 | 물리 |
도윤 | 한국사 |
학생 정보를 수강 내역과 연결하고, 그 정보를 다시 과목명으로 매핑한 결과입니다.
다중 테이블 Join을 사용하는 경우
다중 Join은 다음과 같은 상황에서 유용합니다.
- 여러 테이블의 데이터를 합쳐 전체적인 뷰를 제공할 때
- 정규화된 스키마에서 관련 데이터를 통합할 때
- 다양한 문맥을 결합해 리포트나 대시보드를 만들 때
팁: 가독성을 높이기 위해
s
,e
,c
같은 짧은 별칭 대신students
,enrollments
,classes
처럼 설명적인 별칭(alias)을 사용하는 것이 좋습니다.
다음 내용이 궁금하다면?
코드프렌즈 PLUS 멤버십 가입 or 강의를 등록해 주세요!