반응형
Notice
Recent Posts
Recent Comments
Link
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Archives
Today
Total
관리 메뉴

GBEY

[SQL] LEFT OUTER JOIN이란? (= LEFT JOIN) 본문

데이터분석

[SQL] LEFT OUTER JOIN이란? (= LEFT JOIN)

리스보아 2023. 8. 26. 09:43
반응형

postgresql 로고 이미지

 

LEFT OUTER JOIN

 

 

🎈 목차

LEFT OUTER JOIN 이란? (= LEFT JOIN)

LEFT OUTER JOIN + WHERE

pgAdmin에서 LEFT OUTER JOIN 연습하기

 

 


 

 

🎈 LEFT OUTER JOIN 이란? (= LEFT JOIN)

- 테이블 A 에서 데이터를 선택한다.

- 테이블 A에만 있거나 테이블 A와 B에 동시에 존재하는 데이터를 선택한다.

- 테이블 B에만 존재하는 데이터는 선택되지 않는다.

- 테이블 A에만 존재하는 데이터는 테이블 B 쪽에 null로 표시된다.

- 순서를 바꿔 쓸 수 없다!

 

 

밴다이어그램으로 나타내면?

left outer join 밴다이어그램

 

 

예시로 LEFT OUTER JOIN 살펴보기

Registration
reg_id name
1 Suzy
2 Amy
3 John
Attendance
att_id name
1 Amy
2 Peter
3 John

 

아래 쿼리문을 실행하면?

이 때, 테이블 A = Registration, 테이블 B = Attendance

SELECT * FROM Registration
LEFT OUTER JOIN Attendance
ON Registration.name = Attendance.name;

 

결과:

Attendance 테이블에만 존재하는 데이터는 아예 선택되지 않았고

Registration 에만 존재하는 Suzy 는 null로 표시된 걸 볼 수 있음.

Results
reg_id name att_id name
1 Suzy null null
2 Amy 1 Amy
3 John 3 John

 

 

 

🎈 LEFT OUTER JOIN + WHERE

 

WHERE문을 활용하면 테이블 A에만 고유한 항목을 구할 수 있음

 

쿼리문 사용법

SELECT * FROM TableA
LEFT OUTER JOIN TableB
ON TableA.col_match = TableB.col_match
WHERE TableB.id IS null;

 

밴다이어그램으로 보면?

left outer join을 where과 함께 쓴 밴다이어그램

 

 

 

아래 테이블에서 Registration 테이블에만 고유한 값을 구해보면?

Results
reg_id name att_id name
1 Suzy null null
2 Amy 1 Amy
3 John 3 John

 

쿼리문:

SELECT * FROM Registration
LEFT OUTER JOIN Attendance
ON Registration.name = Attendance.name
WHERE Attendance.att_id IS null;

 

결과:

Attendance 테이블에는 없는 값인 Suzy 데이터만 선택되었음.

Results
reg_id name att_id name
1 Suzy null null

 

 

 

🎈 pgAdmin에서 LEFT OUTER JOIN 연습하기

 

영화의 정보들이 있는 film 테이블과 영화 dvd 재고에 대한 정보가 있는inventory 테이블이 있을 때

inventory에 없는 영화의 목록을 알고자 함

>> film 테이블을 테이블A로 두고 LEFT JOIN 실행!

 

SELECT film.film_id, title, inventory_id, store_id
FROM film
LEFT JOIN inventory ON
inventory.film_id = film.film_id
WHERE inventory.film_id IS null;

 

output:

쿼리를 실행했을 때 pgadmin 에서의 결과물

반응형