帮忙看看,怎么简化这条mysql语句,并且优化查询效率~~~~~
本帖最后由 setoy 于 本文来源gaodai$ma#com搞$$代**码)网8搞代gaodaima码2013-12-19 12:03:34 编辑
有三张表:管理员表,部门表,和管理员对部门的打分表,如下:
现在要对每个部门的得分情况进行查询并统计,即使某个部门没有得分纪录也要显示他的得分(0分),查询统计的结果如下所示:
mysql语句一直一知半解,东拼西凑写了一段:
select <br /> '' as type, <br /> `class`.`name` as cname, <br /> `score`.`cid`, <br /> `score`.`uid`, <br /> `user`.`name` as uname,<br /> `score`<br />from `score`<br />right join `class` on `score`.`cid` = `class`.`cid`<br />left join `user` on `score`.`uid` = `user`.`uid`<br /><br />union all(<br /> select <br /> '汇总', <br /> `c`.`cname`, <br /> `c`.`cid`, <br /> `c`.`uid`, <br /> count(`cid`) as uname,<br /> sum(`score`) as score<br /> from (<br /> select <br /> '' as type, <br /> `class`.`name` as cname, <br /> `score`.`cid`, <br /> `score`.`uid`, <br /> `user`.`name` as uname,<br /> `score`<br /> from `score`<br /> right join `class` on `score`.`cid` = `class`.`cid`<br /> left join `user` on `score`.`uid` = `user`.`uid`<br /> ) c group by `cname`<br />)<br /><br />order by `cname` asc, `type` asc;
貌似这个sql语句太复杂了!能不能简化这条语句呢?另外从查询效率上能不能优化?
表结构、数据和代码都在这里:http://sqlfiddle.com/#!2/6f5db6/10
请帮忙看看
分享到: 更多
——解决方案——————–
可以用一句简单的sql + 一段php程序进行实现吗
——解决方案——————–
desc sql
对关键字段,加上索引看看
搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:帮忙看看,如何简化这条mysql语句,并且优化查询效率~
转载请注明原文链接:帮忙看看,如何简化这条mysql语句,并且优化查询效率~
