mysql三表sum连接

blmhpbnm  于 2021-06-17  发布在  Mysql
关注(0)|答案(1)|浏览(332)

我有三张table
学生

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(标记的总和为total)

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

提前谢谢你的帮助,我想这样的输出,甚至连接查询或子查询,这是最好的时机

omhiaaxx

omhiaaxx1#

这只需要在所有表之间使用一个直接的左连接,并按student进行聚合。

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;

演示

注意,如果 studenid 成为 Student 表,则严格地说,我们只需要按此列进行聚合。

相关问题