0

私は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 回のクエリで悪い結果が返されました。

私のクエリで何が間違っているのか説明できますか?

ありがとうございました

4

0 に答える 0