2013-02-24 1 views
1

테이블이있어 수업에 참석하는 사용자를 나열하고 있습니다. 이 표 아래에는 수업에 참석하지 않는 사용자 목록이있는 <select> 필드가 있습니다. 나열ID가 응답 배열과 같지 않은 위치를 선택하는 방법

쿼리 클래스에 참석 사용자 : 여기

SELECT * FROM User 
left join UserCourse on User.id = UserCourse.fkStudentId 
where UserCourse.fkCourseId = 1 and u.fkRoleId = 3; 

그리고 나는 "예외"를 나열하려고 내 코드입니다 :

SELECT * FROM User where id != 
(SELECT id FROM User 
left join UserCourse on User.id = UserCourse.fkStudentId 
where UserCourse.fkCourseId = 1 and u.fkRoleId = 3); 

문제는 여러 가지가 있다는 것을,이다 두 번째 쿼리와 일치하는 행은 허용되지 않습니다. 참석하지 않은 학생들을 나열하는 방법에 대한 제안 사항이 있습니까?

+1

당신이 원하는' –

+0

를 in'하지 왜'왼쪽 join'를 사용할 수 있습니까? 사용자 ID가 코스 테이블에는 있지만 사용자 테이블에는없는 경우가 있습니까? 또한, 'AND fkStudentID = NULL'을 사용하여 학생들이 참석하지 못하도록 할 수 있습니다. – shahkalpesh

+0

중복 가능한 [다중 검색 조건 SQL] (http://stackoverflow.com/questions/10341394/multiple-search-condition-sql) – gdoron

답변

5

NOT IN!= 교체 :

SELECT * FROM User where id NOT IN 
(SELECT id FROM User 
left join UserCourse on User.id = UserCourse.fkStudentId 
where UserCourse.fkCourseId = 1 and u.fkRoleId = 3); 
+0

은 매력처럼 작동합니다! 고맙습니다! :) – Kriszta

관련 문제