+ -
当前位置:首页 → 问答吧 → 求助求助! join两个表后 group by 和SUM求和计算错误

求助求助! join两个表后 group by 和SUM求和计算错误

时间:2010-09-01

来源:互联网

我现在有 a b c 三张表
a 表中 字段   no  name  grade
b 表中 字段   no score
b 表中 字段   no score

a表中数据    no  name  grade
                        011  王  2008
                        012  张  2008
                        013  李  2008
                        014  赵  2007

b表中数据      no    score
                        011    10
                        011    11
                        012    13
                        013    15

c表中数据      no    score
                        011    7
                        011    6
                        013    5
                        013    4

现在想查询所有2008的人的 b成绩总和和 c成绩总和

然后我用一下语句查询后会得出错误结论
SELECT `a`.`no`,`a`.`name`,SUM(`b`.`score`),SUM(`c`.`score`)
FROM `a`
LEFT JOIN `b` ON `a`.`no` = `b`.`no`
LEFT JOIN `c` ON `a`.`no` = `c`.`no`
WHERE `grade` =  '2008'
GROUP BY `a`.`no`  


错误结果   no     name     SUM(`b`.`score`)        SUM(`c`.`score`)
                  011        王               42                                   26
                  012        张               13                                   NULL
                  013        李               30                                  9

正确的结果应该是    
                  011        王               21                                   13
                  012        张               13                                   NULL
                  013        李               15                                   9



不知道哪里出了错  请高人指点,谢谢 在线等。。。。

作者: mingo1214   发布时间: 2010-09-01

主要是你B C 表有均有两条11的记录 a b c 连表的话会产生4条记录 在经过group by后 四条记录的值b.score以及c.score都是一起算的总和 你不加group by 看看是不是四条记录~

作者: vleijun   发布时间: 2010-09-01

后面两张数据表的设计不符合第三范式

作者: vleijun   发布时间: 2010-09-01

恩 是的  是会多出很多条记录  那要怎么改?

作者: mingo1214   发布时间: 2010-09-01

网站开发技术群:30120161

作者: 27025011   发布时间: 2010-09-01