Heim  >  Artikel  >  Backend-Entwicklung  >  帮忙看看,如何简化这条mysql语句,并且优化查询效率~

帮忙看看,如何简化这条mysql语句,并且优化查询效率~

WBOY
WBOYOriginal
2016-06-13 12:30:59789Durchsuche

帮忙看看,怎么简化这条mysql语句,并且优化查询效率~~~~~

本帖最后由 setoy 于 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
请帮忙看看
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn