我有一個存儲考試記錄的數據庫:tbl_exams
存儲考試的ID和名稱 - 只有9個考試,因此該表中只有9條記錄考試是固定的,不會改變。 tbl_exam_details
存儲考試條目的所有詳細信息,幷包含來自tbl_exams
的相應ID - 這存在外鍵約束。我想要做的是創建一個查詢,返回行只有當所有9個考試已被某個學生採取,並且pass_or_fail
字段爲'1' - 我使用tinyint(1)
來存儲1通過,或0是失敗)。這主要是爲了檢查是否所有9個考試都已通過。MySQL - 僅在WHERE子句中存在所有值時才返回行
這是我迄今爲止,但它返回行,即使學生只完成一個或兩個考試:
SELECT tbl_exam_details.student_id, exam_name, exam_date, pass_or_fail FROM tbl_exam_details
INNER JOIN tbl_exams ON tbl_exams.exam_id = tbl_exam_details.exam_id
WHERE student_id = 1 AND pass_or_fail = 1
AND tbl_exam_details.exam_id IN (1, 2, 3, 4, 5, 6, 7, 8, 9)
ORDER BY exam_details_id
我需要的是查詢只返回行一旦所有9考試已通過。所以,如果學生通過了8次考試,則查詢應返回0行。如果有人能幫助我,將不勝感激。
你能編輯你的問題,並提供樣本數據和期望的結果嗎? –
您可以創建一個'all_exams'列,當表被修改時它會自動更新。如果所有exam_id都設置,all_exams = 1,否則爲0。 – nncho