2015-12-21 50 views
1

更新多個表的總和我有3個表:mtsr1a,engr1a和mainscores,如下圖所示。如何在另一個表

此表是與基質號碼作爲列2和總性能當然作爲Column7

mtsr1a

Column2  Column7 
15/001  8  
15/002  6  
15/003  7  
15/004  3  
15/005  7  

此表是另一個當然與基質號碼作爲列2和總性能Column7

engr1a

Column2  Column7 
15/001  9  
15/002  6  
15/003  4  
15/004  8  
15/005  1  

這是SQL鱈魚EI用來獲取兩個表

它運作良好,在MySQL的總和,但恢復時刷新瀏覽器

select Column2,sum(Column7) total 
from 
(
    select Column2,Column7 
    from mtsr1a 
    union all 
    select Column2,Column7 
    from engr1a 
) t 
group by Column2 

使用我得到的代碼更好的總和

Column2  total 
15/001  17  
15/002  12  
15/003  11  
15/004  11  
15/005  8 

這是非常正確的但我想,我將使用和更新其與結果我上面得到了overall_scores列在下表的代碼。

我期待這樣的:

mainscores

Column2  overall_scores 
15/001  17  
15/002  12  
15/003  11  
15/004  11  
15/005  8 
  • 我已經試過連帶對我自己,但我知道這將是在未來其他新手像我這樣的解決方案。我需要這一點是爲了讓我的排名,我已經有一個代碼在這裏,但如果可以包含,這將是一個額外的好處我學習。

  • 另一個是如何使用SQL代碼在PHP爲它當管理員點擊一個按鈕更新數據庫。 謝謝!

回答

0

要插入無論是在第3表中的列值,然後使用insert into .. select from

insert into mainscores 
select Column2, 
sum(Column7) total 
from (select Column2, 
      Column7 
      from mtsr1a 
     union all 
      select Column2, 
        Column7 from engr1a) t 
group by Column2 

(OR)

如果你想UPDATE特定列然後用更新加入像

UPDATE mainscores a 
    JOIN (
    select Column2, 
    sum(Column7) total 
    from (select Column2, 
       Column7 
       from mtsr1a 
      union all 
       select Column2, 
         Column7 from engr1a) t 
    group by Column2) xx 
ON a.Column2 = xx.Column2 
SET a.overall_scores = xx.total; 
+0

請我不理解這一點,因爲它顯示#1054 - 未知列'a.total'在「字段列表」 – maxil

+0

我的壞,它應該是'a.overall_scores'。請參閱編輯答案。 – Rahul

+0

這工作就像一個魔術..謝謝! – maxil