Programming/Postgres DB
[PostgresDB-2] 13. 테이블 조인 (LEFT JOIN)
midnightcoder
2022. 12. 21. 14:49

- LEFT JOIN은 두 테이블의 공통 데이터 (교집합) 뿐만 아니라, 좌측 TABLE의 모든 데이터를 가져오는 문법
1) 먼저 공통된 부분을 JOIN 하고
2) 추가로 나머지 값들 (왼쪽 TABLE의 나머지)을 가져와서
3) 빈값인 NULL로 채움

- QUERY 실습

=============================문제 time ===========================
A. 모든 사진의 "파일명"을 조회하시오. 게시자가 있다면 "닉네임"도 함께 가져올 것.
SELECT
*
FROM
photos
JOIN users ON
users.id = photos.user_id
;
위 쿼리의 결과는 아래 그림의 위에 Table이다.
즉, 두 테이블(users와 photos)의 JOIN된 부분만 나타낸다.
모든 사진의 파일명을 조회하려면 LEFT JOIN을 하면 되는데, 쿼리는 아래와 같다
SELECT
*
FROM
photos
LEFT JOIN users ON
users.id = photos.user_id
;


그리고 파일명과 닉네임만 조회를 하기 위해서 SELECT 부분을 수정한다
SELECT
photos.filename,
users.nickname
FROM
photos
LEFT JOIN users ON
users.id = photos.user_id
;
결과

B. 모든 댓글 "내용"을 조회하시오. 단, 댓글이 달린 사진의 "파일명"도 함께 가져올 것
SELECT
comments.body,
photos.filename
FROM
comments
LEFT JOIN photos ON
comments.photo_id = photos.id
;

출처 : 홍팍의 'SQL 데이터 분석, 활용!'