MySQL JOIN 혼용

00_8_3·2022년 5월 2일
0

데이터베이스

목록 보기
3/4

JOIN

A 테이블에서 여러 테이블을 조인하는 경우 Inner와 Left를 혼용하였던 것 같다.

조인되는 모든 테이블의 레코드가 존재하면 문제가 없었겠지만
스키마를 조금 수정하면서 문제가 발생하였다.

INNER JOIN를 아래와 같이 사용하는 경우
A, B, C, D, E가 모두 만족되는 레코드가 있어야 결과가 나오는데
이 중 B가 조건을 만족하지 않는다면 전체 결과 값이 Null로 나온다.

SELECT 
	* 
FROM A a
	JOIN (B) b ON b.user_id = a.id
	JOIN (C) c ON c.user_id = a.id
	JOIN (D) d ON d.user_id = a.id
	JOIN (E) e ON e.user_id = a.id
WHERE a.id = ?

결론

LEFT JOIN을 사용하여 B, C, D, E 조건 중 만족 하지 않는 것들은
Null이 나오게해 전체 결과에는 영향이 없게하자

0개의 댓글