2014-02-17 92 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