MySQL三表加总

时间:2018-12-14 10:14:03

标签: mysql sql join select

我有三个桌子

学生

studenid  stuname  
101       john     
102       aron     
103       mary     
104       lucy     

主题

studenid  subjid  subjname   
101       1       maths      
102       2       science    
103       3       computer   
104       4       english    

标记

subjid  mark   
1       50
2       40
3       55
4       60
1       40
2       55
3       60

我想要这样的输出,其中studenid(标记的总和为总和)

studenid  stuname  mark     
101       john     90      
102       aron     95    
103       mary     115   
104       lucy     60

在此先感谢您的帮助,我想要这样的输出,即使是联接查询或最适合计时的子查询

1 个答案:

答案 0 :(得分:2)

这只需要所有表之间的左连接,并由学生进行汇总。

SELECT
    st.studenid,
    st.stuname,
    COALESCE(SUM(m.mark), 0) AS mark
FROM Student st
LEFT JOIN Subject su
    ON st.studenid = su.studenid
LEFT JOIN Marks m
    ON su.subjid = m.subjid
GROUP BY
    st.studenid,
    st.stuname;

enter image description here

Demo

请注意,如果studenidStudent表中的主键,那么严格来说,我们仅需要按此列进行汇总。