2014-02-17 62 views
-2

Helllo,我有以下表结构MySQL的计算列

成绩表:

|..ID..User_ID..Test_ID....Test_Score | 
|.5.......1.........1...............999.....| 
|.4.......1.........3...............120.....| 
|.3.......1.........2...............115.....| 
|.2.......2.........2...............200.....| 
|.1.......2.........3...............123.....|

用户表:

|..ID...Username...TotalTestScore......| 
|.2.......Nick................1400...........| 
|.1.......Mike................1222...........|

我的目标是让TotalTestScore列保存的总和所有与此比例关联的分数与比分表中的该用户代码相关联,并更改为比分表。 我正在考虑用触发器来做,但不知道如何开始。有人可以说,如果我在做甚至可能,并可能提示。 谢谢你的时间!

+1

提示:使用'JOIN'和聚合函数,如'SUM()' – Kermit

回答

2

除非你有数以百万计的用户和考试成绩的gazillions,并没有索引我不会推荐存储使用查询的总测试成绩,因为这可以简单地返回,没有触发器,没有存储列,没问题 ...

SELECT u.ID, 
     u.UserName, 
     SUM(s.Test_Score) TotalTestScore 
FROM Users u LEFT JOIN 
     Scores s ON u.ID = s.User_ID 
GROUP BY u.ID, 
      u.UserName 
+0

视图可能会是安全的。 – Kermit

+0

@FreshPrinceOfSO一个视图是安全的,但是为了创建一个视图,OP需要的每一个查询都可能会被杀死。如果这样的视图被多次/定期使用,并且视图包含一些复杂的业务逻辑,我会说创建这样一个视图。 –

+0

这看起来像我可以使用的东西。谢谢! – user2840278