私は3つのテーブルを持っています
学校
# id
* max_students
...
日付
# id
* school
学生
# id
* date_id
...
* over_limit
* canceled - DEFAULT NULL
* logged_out - DEFAULT NULL
ユーザーが学生を登録するとき、学生の数が学校の max_students 以上でない場合、クエリを使用して登録された学生をカウントします。この結果 (0 または 1) は後でover_limitセルに保存されます
このクエリを使用してカウントします
SELECT IF(COUNT(S.id) >=
(SELECT SC.max_students
FROM schools SC
JOIN dates D ON D.school = SC.id
WHERE D.id = S.date_id)
,1,0)
FROM students S
WHERE S.date_id = "number from PHP" AND S.logged_out IS NULL AND S.canceled IS NULL
しかし、何か問題があります。学生が over_limit としてマークされることもありました。
そこで、これらの結果をログに記録することにしました。上記のクエリの結果、新しいクエリで選択された COUNT と max_students を保存します。177 回の発生で、9 回のクエリで悪い結果が返されました。
私のクエリで何が間違っているのか説明できますか?
ありがとうございました