SQL子查询 - 一个别名列

时间:2015-08-14 15:09:15

标签: mysql sql

course_completions

+-----------------------------------------------+
|  id  coursemodid userid  state   timemodified |
+-----------------------------------------------+
|  370     23       2         1    1433582890   |
|  329     24       89        1    1427771915   |
|  333     30       39        1    1428309816   |
|  332     32       39        1    1428303307   |
|  327     33       40        1    1427689703   |
|  328     34       89        1    1427710711   |
|  303     35       41        1    1410258482   |
|  358     36       99        1    1432020067   |
|  365     25       2         1    1433142455   |
|  304     26       69        1    1410717866   |
|  353     37       95        1    1430387005   |
|  416     38       2         1    1438972465   |
|  300     27       70        1    1409824001   |
|  302     29       74        1    1412055704   |
|  297     30       2         1    1409582123   |
|  301     133      41        1    1410255923   |
|  336     133      91        1    1428398435   |
|  364     133      40        1    1433142348   |
|  312     133      85        1    1425863621   |
+-----------------------------------------------+

course_modules

+------------------+
| id    course     |
+------------------+
| 23      6        |
| 24      6        |
| 25      6        |
| 26      6        |
| 27      6        |
| 28      6        |
| 29      8        |
| 30      8        |
| 31      8        |
| 32      8        |
| 33      8        |
| 34      5        |
| 35      5        |
| 36      5        |
| 37      5        |
| 38      5        |
| 39      9        |
| 40      9        |
| 41      9        |
+------------------+   

course_mod_settings

+--------------------------------------+
|id  course  modinstance               |
+--------------------------------------+
| 27    8         30                   |
| 28    8         31                   |
| 29    8         32                   |
| 30    8         33                   |
| 31    6         23                   |
| 32    6         24                   |
| 33    6         25                   |
| 34    6         26                   |
| 35    6         27                   |
| 36    6         28                   |
| 37    9         39                   |
| 38    9         40                   |
| 39    9         41                   |
+--------------------------------------+

我试图在一个SQL语句中构建两个子查询,就像我想要计算'标准mod设置'一列中的表值和' course_completions'特定用户的一列中的表值以及课程。

除了课程ID之外,count(cms.id)和count(cc.id)之间不应该有关系,因为count(cms.id)是用户模块的计数,而count(cc.id)是默认情况下设置的设置计数。

输出:

COURSE        USERID     count(cms.id)     count(cc.id)
6               89             3              6
6               39             7              6
6               40             5              6
8               69             3              4
8               2              0              4
8               95             4              4

课程:获得课程

USERID:获取用户ID

count(cms.id):获取用户已完成模块的数量。

count(cc.id):获取设置计数(例如:对于课程6,设置计数为6,而对于课程4,设置计数为3。

SELECT cm.course
    ,cc.userid
    ,count(cc.coursemodid) AS usermodules
    ,(
        SELECT count(ccc.id)
        FROM course_mod_settings cms
        INNER JOIN course_modules cm ON cms.course = cm.course
        ) AS modsettings
FROM course_completions cc
INNER JOIN course_modules cm ON cc.coursemodid = cm.id
WHERE cc.STATE = 1
GROUP BY cm.cours
    ,cc.userid

0 个答案:

没有答案