我有 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,当日期未满时,有时当日期已满时,学生没有被标记为over_limit。
所以我决定记录这些结果。我保存了上面查询的结果,在新查询中选择了 COUNT 和 max_students。在 177 次出现中,9 次查询返回错误结果。
你能解释一下我的查询有什么问题吗?
谢谢