Home > Backend Development > PHP Tutorial > 还是问一个mysql的查询汇总的汇总问题

还是问一个mysql的查询汇总的汇总问题

WBOY
Release: 2016-06-23 14:39:48
Original
1105 people have browsed it

本帖最后由 setoy 于 2013-12-18 18:11:02 编辑

有五个人,uid分别是1~5
有对着这五个人打分的表格(某个人有可能没有得到过分数)
id  uid  scroe-------------1    1    1.52    1    1.83    2    -5.54    1    0.85    2    8.26    1    -27    4    38    2    2.3--------------
Copy after login


现在要统计他们所有人的分数,即使查询不到某个人的得分,也要显示0分,显示格式如下:
用户  分数   汇总分-----------------------1      1.5     2.11      1.8     2.11      0.8     2.11      -2      2.12      -5.5    52      8.2     52      2.3     53      0       04      3       35      0       0
Copy after login


回复讨论(解决方案)

不知道楼主想要问什么

怎么得到第二张表,mysql语句怎么写?

建表:

CREATE TABLE a	(`id` int, `uid` int, `scroe` float);	INSERT INTO a	(`id`, `uid`, `scroe`)VALUES	(1, 1, 1.5),	(2, 1, 1.8),	(3, 2, -5.5),	(4, 1, 0.8),	(5, 2, 8.2),	(6, 1, -2),	(7, 4, 3),	(8, 2, 2.3);
Copy after login

问题是你数据集里都没uid=3和uid=5的纪录。参考

select t.*,round(s.scroe,1) as scroe , round(if(s.total is null,0,s.total),1) as summary from (select 1 as uid union select 2 as uidunionselect 3 as uid union select 4 as uidunion select 5 as uid) t left join (select uid,scroe,(select sum(scroe) from a where uid=aa.uid group by uid) as total from a as aa) son s.uid = t.uid
Copy after login

问题是你数据集里都没uid=3和uid=5的纪录。

uid是和user表里管理的字段,根据user表里的记录来读取:
在这里: http://bbs.csdn.net/topics/390673185


用户表tu

得分表t

SQL:SELECT tu.uid,t.score,a.total from test t right join test_user tu on tu.uid=t.uid left join (SELECT uid,sum(score) as total from test group by uid) a on a.uid=t.uid order by tu.uid

结果

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template