데이터분석공부

데이터분석공부 SQL LEFT JOIN 이란?

EFS 2022. 5. 28. 20:41
반응형

LEFT Join이란?

기초SQL를 공부하다보면 조인을 벤다이어그램으로 집합으로 설명해준 예시가 많은데요. 그런데 저는 그게 조금 헷갈리더라구요. 생활코딩이라는 사이트를 통해 알게 된 'dataschool' 이란 사이트에 올라온 설명이 더 와닿습니다. 데이터분석공부하시는 분들이 참고하시면 좋을 사이트입니다.

 



우선 오늘 공부하게 될 'Left join'에 대해서 알아보면요.

아래의 Table1과 Table2라는 두개의 테이블이 있을 때, left join은 기준이 되는 표를 왼쪽에 두고, 이 표를 기준으로 오른쪽의 표를 합성해서 하나의 표를 만드는 방법입니다. ( 생활코딩 설명 참조 ) 즉 Table1에만 있는애들도 가지고 오는 것 + Table1과 Table2공통으로 있는값을 가지고오는것입니다. Left outer join 이라고 부르기도 한다.


출처 : www.dataschool.com

 



생활코딩이라는 사이트의 유튜브강의를 통해 직접 실습을 해보았습니다.

 


아래의 설명을 보시면 Leftjoin 확실히 이해가 가실꺼에요.

 

LEFT JOIN - 생활코딩

수업소개 left join은 기준이 되는 표를 왼쪽에 두고, 이 표를 기준으로 오른쪽의 표를 합성해서 하나의 표를 만드는 방법입니다. 이 수업에서는 left join을 소개합니다.  강의

www.opentutorials.org

 



LEFT Join 예시 : 아래 Topic과 author, Profile 이라는 테이블이 있다.


▶ Topic과 author라는 Table을 Leftjoin를 써서 붙인다면.아래와 같이 명령어를 만들어야 한다.

SELECT * FROM topic LEFT JOIN author ON topic.author_id = author.aid  
    : Topic테이블을 왼쪽에 놓고 author 테이블을 오른쪽에 놓겠다.  


1) 우선 Topic테이블을 붙이고 author테이블의 컬럼을 다 옆에 붙여놓는다.  


2) 그리고 author id와 topic테이블의 aid컬럼값중 동일한값을 붙인다. 그런데 아래 예시 중 Topic값중 Null에 해당하는 값은 author에 없으므로 그 옆은 Null로 표현한다. 



3) 그런데 두개의 테이블만 조인시키는 거이 아니라, 3개 이상의 테이블을 붙이고 싶다면. 예를들어 저 위 Profile 테이블을 붙이고 싶다면.


SELECT * FROM topic LEFT JOIN author ON topic.author_id = author.aid LEFT JOIN profile ON author.profile_id = profile.pid;
 : 위에서 만든표에 다시 Profile테이블을 오른쪽에 붙인 후 Join키인 profile id가 공통인 값만 붙여넣으면 된다.

4) 그런데 모든 컬럼이 필요업고 아래의 일부 컬럼 ' tid, topic.title, author_id, name, profile.title AS job_title ' 만 출력하고 싶다면!

SELECT tid, topic.title, author_id, name, profile.title AS job_title  FROM topic LEFT JOIN author ON topic.author_id = author.aid LEFT JOIN profile ON author.profile_id = profile.pid;

 

반응형