0

次のテーブルがあります

student(student_id, name)
assignment(student_id, course_code, assignment number)

特定のコースの課題番号 1 を提出したが、課題番号 2 を提出していない学生を返すクエリを作成しようとしています。

次のクエリを作成しましたが、コースごとに結果を返すのに苦労しています。助言がありますか?

SELECT name, a.student_id, course_code
FROM assignment a INNER JOIN student s
on a.student_id = s.student_id
WHERE assignment_number = 1
AND assignment_number != 2
4

3 に答える 3

2
SELECT name, a.student_id, course_code
FROM assignment a INNER JOIN student s
on a.student_id = s.student_id
WHERE assignment_number = 1
AND not exists (select * from
                assignment a2 inner join student s2 
                where a2.student_id = s2.student_id
                and s2.student_id = s.student_id
                and a2.assignment_number = 2)

実際の動作を確認するためのフィドルは次のとおりです。 http://sqlfiddle.com/#!2/48997/2

于 2013-06-18T19:43:45.583 に答える
1
SELECT 
  s.name, 
  s.student_id, 
  a.course_code
FROM 
  assignment a 
INNER JOIN 
  student s
ON 
  a.student_id = s.student_id
WHERE 
  assignment_number in( 1,2 ) 
GROUP BY 
  s.name, 
  s.student_id, 
  a.course_code
HAVING max(assignment_number) = 1 
于 2013-06-18T19:45:25.007 に答える
0

課題 1 を完了したが、課題 2 を完了していない生徒のリスト:

select s.name, a.student_id, a.course_code
from assignment a
inner join student  s on a.student_id = s.student_id
where a.student_id in 
    (Select student_id from assignment
    where assignment_id = 1) -- All students that submitted Assignment 1
and a.assignment_id !=2
于 2013-06-18T19:45:02.500 に答える