我正在嘗試找到剩餘的可用於註冊課程的學生。要做到這一點,我需要找到當前活躍並且當前不在課程中的學生。 Bu我認爲我正在寫的查詢是不正確的,因爲當我運行查詢時,它會一直顯示一組空的結果,我怎麼才能找到能夠註冊課程的剩餘學生?如何編寫正確的查詢以找到當前不在課程中的學生
下面是當前查詢:
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
您的查詢似乎正常工作。最佳答案。謝謝 – user2048994 2013-03-01 11:12:14
歡迎.....:) – Meherzad 2013-03-01 11:13:49
嘗試左連接解決方案,而不是子選擇。子選擇通常較慢 – Kickstart 2013-03-01 11:25:26