羅伯特,
使你可以如何存儲信息的合理假設,你的查詢選擇那些學生對他們來說,你的數據庫沒有列出任何未來計劃的教訓。無論學生是否有過去的課程都沒關係。我不確定你的「尚未預定課程」是什麼意思,因爲這個英語短語有些尷尬。與「沒有/沒有預定過課程」有什麼不同嗎? 「not yet」表示目前不在,建議您跟蹤已預訂的預訂課程,並且還預訂了「尚未預訂」的課程(無論這意味着什麼)。沒有一個水晶球,我不知道你如何跟蹤學生已經預定的課程,但還沒有。
無論如何,如果某個學生的數據庫沒有列出將來爲該學生開始的課程,則會在結果中看到該學生(無論您爲該學生列出的任何課程是從現在開始還是在過去)。
你的查詢還有一個奇怪的事情,那就是你在加入lesson.student = student.person_id中的表格「lesson」和「student」之前,根據計數限制結果。在我看來,如果你想要一個滿足某些條件的學生列表,你只需要在外部查詢的FROM子句中使用「student」,就像在rexem的查詢中一樣。
如果你想看看那些你沒有任何課程記錄的學生(不管課程的開始時間如何),rexem的查詢應該可以工作。如果表「學生」僅列出每個學生一次,則不需要DISTINCT。使用EXISTS的優勢在於,使用EXISTS而不是COUNT,在將計數與零進行比較之前,您不建議需要爲每位學生計算未來課程的總數。有了EXISTS,你建議一旦找到這樣的課程,就不需要繼續尋找學生未來的課程。