求助求助! 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
不知道哪里出了错 请高人指点,谢谢 在线等。。。。
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
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28