JOIN
- SQL 조인은 두 개 혹은 그 이상의 테이블들을 공통 필드를 가지고 머지하는데 사용한다. 분산되어 있던 정보를 통합하는 데 사용된다. 조인의 방식에 따라 다음 두 가지가 달라진다. 보통 INNER와 LEFT로 95% 해결 가능
- 어떤 레코드들이 선택되는지?
- 어떤 필드들이 채워는지?
SELECT A.*, B.*
FROM raw_data.table1 A
___ JOIN raw_date.table2 B ON A.key1 = B.key1 and A.key2 = B.key2
WHERE A.ts >= '2019-01-01;;
INNER, LEFT, RIGHT, CROSS
고려할 점
1. 먼저 중복 레코드가 없고 Primary key의 uniqueness가 보장됨을 체크
2. 조인하는 테이블간의 관계를 명확하게 정의
- One to One
- One to Many
- Many to One: 사실상 one to many와 동일
- Many to Many
3. 어느 테이블을 베이스로 잡을지(From에 사용할지) 결정
JOIN
inner join
- 양쪽 테이블에서 매치가 되는 레코드들만 리턴함
- 양쪽 테이블의 필드가 모두 채워진 상태
left join
- 왼쪽 테이블의 모든 레코드 리턴
- 오른쪽 테이블 필드는 매칭되는 경우만 채워진 상태
full join
- 왼쪽 테이블과 오른쪽 테이블 모든 레코드들 리턴
- 매칭되는 경우, 양쪽 테이블들의 모든 필드들이 채워진 상태
cross join
- 왼쪽 테이블과 오른쪽 테이블의 모든 조합 리턴
- l x r
self join
- 동일한 테이블을 alias만 달리해서 자기 자신과 조인