コースに登録できる残りの学生を見つけようとしています。これを行うには、現在アクティブな学生と現在コースに参加していない学生を見つける必要があります。クエリを実行すると空の結果セットが表示され続けるため、作成しているクエリは正しくないと思います。コースに登録できる残りの学生を見つけるにはどうすればよいですか?
以下は現在のクエリです。
SELECT st.StudentId, StudentAlias, StudentForename, StudentSurname
FROM Course c
INNER JOIN Student_Course sc
ON c.CourseId = sc.CourseId
INNER JOIN Student st
ON sc.StudentId = st.StudentId
WHERE (c.CourseId = 1 AND
sc.StudentId IS NULL
AND st.Active = 1)
ORDER BY st.StudentAlias
以下に表を示します。
生徒: (全生徒のリスト)
StudentId StudentAlias StudentForename StudentSurname Active
1 u09382 James Smith 1
2 u83923 John Brooks 1
3 u38292 Karen Bradshaw 0
4 u20039 Chris Cameron 1
5 u39399 Jane Fields 1
コース: (すべてのコースのリスト)
CourseId CourseNo CourseName
1 INFO121 ICT
2 BUS122 Business and Finance
3 ENG432 English Language
Student_Course: (各コースに在籍する学生のリスト)
StudentId CourseId
1 1
1 3
2 1
4 2
5 2
たとえば、 を選択した場合CourseId = 1
、アクティブであるが明らかにそうではない学生を表示する CourseId = 1
必要があります。つまり、コースへの登録の可能性のためにこれらの学生を以下に表示する必要があります。
4 - Chris Cameron
5 - Jane Fields