在我的数据库中,教师有一个TeacherPIN,Name和Pay。我的数据库还有一个Class,它包含一个ClassPIN以及一个TeacherPIN和Student,它引用了TeacherPIN以及几个ClassPIN。我想更新某位教师的薪水,如果他们在某个班级的学生人数超过25人,但我被困了。目前我正在做:
update Teacher
set Pay = Pay + 1000
where (TeacherPIN = c.TeacherPIN from Class c
and c.ClassPIN = '1010')
and (select count(s.ClassPIN) from Student s
where s.ClassPIN = '1010') >= 25;
我知道这可能是非常错误的,并且喜欢在正确的方向上轻推。
答案 0 :(得分:0)
您可以尝试以下方法:
UPDATE Teacher t
SET Pay = Pay + 1000
LEFT JOIN Class c ON c.TeacherPIN=t.TeacherPIN
LEFT JOIN Student s ON s.ClassPIN = c.ClassPIN
WHERE COUNT(IF(s.ClassPin='1010',1,NULL))>25;
两个JOIN
引入了班级和学生信息,COUNT(IF(s.ClassPin='1010',1,NULL))
统计了“1010”下的s.ClassPins数量。
(我先检查一下:
SELECT *
FROM Teacher t
LEFT JOIN Class c ON c.TeacherPIN=t.TeacherPIN
LEFT JOIN Student s ON s.ClassPIN = c.ClassPIN
WHERE COUNT(IF(s.ClassPin='1010',1,NULL))>25;
)
这假设每个班级只有一名教师。