은세고화 2022. 9. 3. 14:28
반응형

조인은 다른 테이블을 연결할 때 사용한다. 조인조건을 기준으로 두 테이블을 하나로 합친다.

 

 

Inner Join

서로다른 테이블에 있는 데이터를 가져올 때 사용한다. ex) 특정 게시글에 작성된 댓글내용을 가져온다.

 

1번 게시글에 달린 댓글내용과 사용자명을 가져오자

SELECT 댓글내용, 사용자명

FROM comments

JOIN users ON

 users.id = comments.id

WHERE comments.posts_id = 1

 

작동방식

JOIN~ON절에서 =기호로 같은 조건인 복수개의 데이터만 남는다.

users.id 1, comments.posts_id 1 ~~~

user.id 1, comments.posts_id 2 ~~~~

user.id 1, comments.posts_id 1 ~~~~

user.id 1, comments.posts_id 4 ~~~~

user.id 1, comments.posts_id 1 ~~~~

 

이렇게 걸러진 데이터를 where절에서 한번 더 걸러서 최종 결과물을 출력한다.

 

1번 게시글을 좋아요 한 사용자 닉네임과 해당 게시글의 파일명 -> 3중조인

SELECT 닉네임, 파일명

FROM likes

JOIN users ON user.id = likes.user_id

JOIN posts ON posts.id = likes.posts.id

WHERE posts.id = 2;

 

작동 방식

JOIN으로 테이블을 다 붙인뒤에 where절로 필요한 부분만 남긴다.

4중 5중조인도 위처럼 join으로 다 붙이고 where절로 커트를한다.

 


LEFT JOIN

INNER JOIN의 결과 + 왼쪽 테이블의 모든 값을 다 가져옴

정리하자면 LEFT JOIN은 테이블의 공통요소를 조인한 뒤 왼쪽 테이블에 남은 요소들을 다 가져온다.

 

테이블

모든 사진의 파일명을 조회하시오. 게시자가 있다면 닉네임도 함께 가져올 것

SELECT 파일명, 닉네임

FROM photos

LEFT JOIN users ON

users.id = photos.user_id

 

LEFT테이블은 FROM에 적혀있는 테이블이 된다.

 

 

모든 댓글 내용을 조회하시오. 단 댓글이 달린 사진의 파일명도 함께 가져올 것

SELECT 댓글 내용, 파일명

FROM comments

LEFT JOIN photos ON

phtos.id = comments.photo_id

 

 

추가

JOIN 이후에 조건을 추가할 수 있다.

해당 사진에 댓글 내용이 길동인 사람만 조인하고 싶다면

LEFT JOIN photos ON

phtos.id = comments.photo_id

AND comments.body = "길동"

RIGHT JOIN

RIGHT JOIN은 우측 테이블을 기준으로 좌측 테이블에 붙인다.

 

FULL JOIN

왼쪽 오른쪽 모든 값을 다 조인한다.

 

 

 

출처 : https://www.inflearn.com/course/%EA%B0%9C%EB%85%90%EC%8B%A4%EC%8A%B5-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B6%84%EC%84%9D-%ED%99%9C%EC%9A%A9/dashboard

반응형