2017-01-01 1 views
1

나는 모든 사용자가 관련 코스를 선택하는 공통적 인 Course Table을 가지고 있으며 CourseUserMapping Table에 저장했습니다. 이제 내 요구 사항은 course Table에서 선택하지 않은 모든 코스를 표시하고 선택한 코스 목록을 숨기고 싶습니다. 내가 예상대로
courseusermapping 테이블에서 매핑되지 않은 코스 테이블을 표시하는 방법

select c.* from Course c full outer join CourseUserMapping cum on c.CID = cum.CID 
where c.CID is NULL Or cum.CID is NULL and cum.UserID='u3' 

위의 쿼리가 작동하지 않습니다. 다음

select c.* 
from Course c 
left join CourseUserMapping cum 
    on c.CID = cum.CID and 
     cum.UserID = 'u3' 
where cum.CID is NULL 

LEFT JOIN모든 과정을 유지하며, : 잘 들어

내가 사진

enter image description here

+0

'CID가없는 코스에서 CourseName을 선택하십시오 (CourseUserMapping에서 다른 CID를 선택하십시오)' –

+0

@KraangPrime : 'UserID'를 기반으로하는 방법 – user6503334

+0

죄송합니다. 질문을 잘못 읽었습니다. 팀의 해결책이 맞습니다. –

답변

1

변경은 A LEFT JOIN에 가입하고 WHERE 절을 수정을 만들었 이해 어떤 사용자에게도 매핑되지 않은 코스 만 유지하십시오. 이 조건은 where cum.CID is NULL입니다.

+0

는 작동하지 않는 결과가 데이터 표시 – user6503334

+0

을 빈 보여주는'Course.CID = CourseUserMapping.CID 에 을 CourseUserMapping 가입 왼쪽 이 쿼리는 나를 위해 일합니다'select * from CID where in courseusermapping from userus = 'u3') ' – user6503334

+0

@ user6503334 편집을 다시 시도하십시오. –

관련 문제