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
이 나오게해 전체 결과에는 영향이 없게하자