[MySQL] Outer Join시 빈값인 row도 다~ 나오게 하고 싶을 때,

Walter Mitty·2023년 6월 26일
0

교육 콘텐츠가 있고, 그 교육 콘텐츠에 따라 유저의 교육 수강률을 보고 싶을 때(수강률 ROW가 존재 하지 않는다면 아직 '미이수'인 거여서 필요함)

교육 콘텐츠가 아래와 같이 있고,

아래와 같이 userId가 8인 유저가 2,3 번 교육을 이수, 혹은 진행 중일 때

나는 모든 교육 콘텐츠에 따른 userId 8의 결과를 보고싶었다.

Error Query

select ec.id, ec.title, ec.`type`, ei.userId , ei.percentage  from eduContents ec
left outer join eduInfo ei on ec.id = ei.contentId where ei.userId = 8;

결과는,?

이게 아니야...!!

예전에 Oracle 을 쓸 때는 잘 먹힌 Full Outer Join 이 먹히지 않았다.
그래서 다시 로직을 짜야하나..?싶었는데 사수분이 알려주신 MySQL에서의 방법!!

Success Query

select ec.id, ec.title, ec.`type`, ei.userId , ei.percentage  from eduContents ec
left outer join eduInfo ei on ec.id = ei.contentId where ei.userId = 8 or ei.id is Null;

결과는,

크흐 이거지, 이렇게 뽑아지는게 내가 원하는 거였다! 보니까
MySQL에서는 left(right) outer join시에는 null 조건도 넣어줘야 null값인 애들도 나올 수 있었다.

0개의 댓글