我有两张桌子:
1) 学生
ID, NAME, LASTNAME, CLASS, ...and more columns (not important)...
1, Peter, Fish, 4A
2, Johnny, Rock, 4A
3, Tony, Martin, 4B
4, David, Blur, 4C
5, Joe, Black, 4B
2) MATH_CLASS
STUDENT_ID, POINTS
1, 15
1, 20
2, 30
3, 11
3, 5
4, 3
现在,用
"SELECT ID, NAME, LASTNAME, SUM(POINTS) FROM STUDENTS, MATH_CLASS WHERE ID = STUDENT_ID GROUP BY ID"
我可以获得简单的学生名单,然后是他们在MATH_CLASS上的总分。
我需要的是获得的列表甚至包含两个没有MATH_CLASS条目的学生(只有id和名称后面没有任何信息或后跟0)。
任何想法如何解决这个问题? 谢谢!
答案 0 :(得分:2)
你需要的是LEFT JOIN。
SELECT ID, NAME, LASTNAME, SUM(COALESCE(POINTS))
FROM STUDENTS LEFT JOIN MATH_CLASS ON ID = STUDENT_ID GROUP BY ID
请注意使用COALESCE来避免结果集中的Null apearing。
顺便说一句,我强烈建议你使用小写表和列名。