교육 콘텐츠가 있고, 그 교육 콘텐츠에 따라 유저의 교육 수강률을 보고 싶을 때(수강률 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값인 애들도 나올 수 있었다.