首頁 > 後端開發 > php教程 > 帮忙看看,如何简化这条mysql语句,并且优化查询效率~

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

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
發布: 2016-06-13 12:30:59
原創
861 人瀏覽過

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

本帖最后由 setoy 于 2013-12-19 12:03:34 编辑 有三张表:管理员表,部门表,和管理员对部门的打分表,如下:


现在要对每个部门的得分情况进行查询并统计,即使某个部门没有得分纪录也要显示他的得分(0分),查询统计的结果如下所示:


mysql语句一直一知半解,东拼西凑写了一段:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

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
请帮忙看看
相關標籤:
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
javascript - js正規符合特定字串
來自於 1970-01-01 08:00:00
0
0
0
為什麼說非物件呼叫成員函數fetch()
來自於 1970-01-01 08:00:00
0
0
0
資料庫設定檔必須要用二維數組
來自於 1970-01-01 08:00:00
0
0
0
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板