在 SQL 中,假设我们有一个名为“courses”、“student”和“courses_taken”的表
类(class)
c_id key int
name text
credits int
学生
s_id key int
name text
total_credits int
已修课
id key int
s_id foreign int
c_id foreign int
我想让 total_credits 字段基本上等于
select sum(c.credits) from courses c, students s, courses_taken ct where ct.c_id = courses.c_id and ct.s_id = s.s_id;
我假设这不是正确的方法,因为我以前从未使用过多表查询,如果有人可以帮助我处理该 sql 查询,那就太好了。谢谢
最佳答案
MySQL 中没有任何“内置”的东西可以让您直接执行此操作。每次更新 courses_taken
或 courses
表时,您都必须编写一些代码来更新 total_credits
。
虽然有几个选项可以处理这个问题
在您的应用程序中编写代码以维护
total_credits
列。使用
courses
和courses_taken
表上的触发器在数据库中编写代码,以保持total_credits
列最新插入/更新/删除行的日期。去掉
total_credits
列,只在需要时通过查询计算它(参见@andy 的回答)。编写一个定期计算
total_credits
的批处理作业,并接受它不会始终 100% 正确的事实。
您选择哪个取决于您在其中使用此数据库的应用的要求。
关于mysql - 如何使单元格值相对于另一个表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26788685/