by 도뎡이 [SQL Query] mysql outer join [2022.02.15 09:51:10]
안녕하세요, 선배님들. 아래의 SQL 쿼리에서 PASS(LEFT OUTER JOIN) 테이블을 서브 쿼리 형식으로 조회하는데요. 서브 쿼리 형식이 아닌, 일반적인 조인 형식으로 변경할 수 있을까요? 선배님들의 소중한 피드백 미리 감사드립니다! SELECT FAM.* FROM family AS FAM -- 가족 INNER JOIN client AS ME ON FAM.me_client_id = ME.client_id -- 본인 INNER JOIN client AS OTHER ON FAM.other_client_id = OTHER.client_id -- 상대방 LEFT OUTER JOIN ( SELECT client_id, MAX(passport_id) FROM passport GROUP BY client_id ) AS PASS ON OTHER.client_id = PASS.client_id -- 여권 WHERE FAM.me_client_id = 1038
마농 선생님, 여기에 질문 다시 작성했습니다!
잘은 모르겠지만,
본인과 가족의 여권 정보를 원하는것 같네요.
SELECT FAM.me_client_id
, CASE WHEN C.client_id = FAM.me_client_id THEN 'ME' ELSE 'FAM' END
, C.client_id
, MAX(PASS.passport_id) AS passport_id
FROM family AS FAM -- 가족
INNER JOIN client AS C
ON C.client_id IN ( FAM.me_client_id -- 본인
, FAM.other_client_id) -- 상대방
LEFT OUTER JOIN passport AS PASS -- 여권
ON C.client_id = PASS.client_id
WHERE FAM.me_client_id = 1038
GROUP BY FAM.me_client_id
, CASE WHEN C.client_id = FAM.me_client_id THEN 'ME' ELSE 'FAM' END
, C.client_id