我有三个桌子
学生
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
在此先感谢您的帮助,我想要这样的输出,即使是联接查询或最适合计时的子查询
答案 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;
请注意,如果studenid
是Student
表中的主键,那么严格来说,我们仅需要按此列进行汇总。