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