2013-04-23 2 views
0

적어도 하나의 클래스에 있지만 그룹의 일부가 아닌 학생을 나열하려고합니다. 내 코드는 0 개의 결과를 표시하지만 두 개가 있어야합니다. where 절에 문제가 있습니다. 나는 하나 이상의 수업을 듣는 학생에게 보여줄 수 있고, 어떤 그룹에도 속하지 않은 것을 보여주기 위해 그것을 얻을 수 없다. 내 where 절에 문제가 있습니다. 나는 관련된 3 개의 테이블을 가지고있다. 학생 ID 및 ID를 소지 한 학생, 학생 ID 및 그룹 ID를 보유한 회원 및 그룹 ID를 보유하고있는 학생 그룹where exists clause sql

코드 :

select student.lastname 
from student inner join enrolled on enrolled.studentid = student.sid 
where not exists(
select * 
from studentgroup inner join memberof on memberof.groupid = studentgroup.gid 
) 

답변

1

학생이 학생 그룹과 어떻게 연관되어 있는지에 대한 조건이 없습니다. 따라서 EXISTS은 항상 true를 반환하지만 EXISTS이 false를 반환하는 행을보고 싶습니다.

하위 쿼리에 WHERE을 추가하여 학생을 그룹과 연결할 수 있습니다.

SELECT student.lastname 
FROM student INNER JOIN enrolled ON enrolled.studentid = student.sid 
WHERE NOT exists(
SELECT * 
FROM studentgroup INNER JOIN memberof ON memberof.groupid = studentgroup.gid 
WHERE student.sid = memberof.studentid 
) 
+0

감사합니다. – user12074577

1

당신이 where not inwhere not exists에서 where 절을 변경 한 경우? 예 :

where student.id not in (select distinct student_id from member_of)