首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一对多关系的MySql查询

一对多关系的MySql查询
EN

Stack Overflow用户
提问于 2016-12-17 09:36:47
回答 3查看 301关注 0票数 0

面对mysql查询中的问题,尝试使用mysql,但没有得到预期的输出。

我要所有的班级,所有的学生记录与总ratingscore.Each班有很多学生。学生有很多或根本没有奖学金。

类表如下所示

代码语言:javascript
复制
+---------------------+
|   id      classname |
+---------------------+
|   1            10   |
|   2            11   |
|   3            12   |
+---------------------+

学生表看起来,分类是外键

代码语言:javascript
复制
+------------------------------------+
|   id     classid       studentname |
+------------------------------------+
|   1        1            xembine    |
|   2        1            denial     |
|   3        2            suzone     |
|   4        3            rosh       |
|   5        2            broad      |
|   6        1            bell       |
|   7        3            martin     |
|   8        1            jroff      |
+------------------------------------+

如表所示,学生是外键。

代码语言:javascript
复制
+------------------------------------+
|   id      studentid    ratingscore |
+------------------------------------+
|   1           1         4000       |
|   2           1         10000      |
|   3           5         20000      |
|   4           2         1000       |
|   5           6         2222       |
|   6           1         5000       |
|   7           6         12000      |
|   8           3         3800       |
|   9           5         7500       |
+------------------------------------+

这里:没有来自三班的学生,得到任何等级分数yet.so需要那个学生有零分。

预期产出:-

代码语言:javascript
复制
+-------------------------------------------------------------+
|   studentname  studentid  classid   classname   ratingscore |
+-------------------------------------------------------------+
|     xembine       1         1           10         19000    |
|     denial        2         1           10          1000    |
|     suzone        3         2           11          3800    |
|     rosh          4         3           12            0     |
|     broad         5         2           11          27500   |
|     bell          6         1           10          2222    |
|     martin        7         3           12            0     |
|     jroff         8         1           10            0     |
+-------------------------------------------------------------+
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-12-17 10:39:17

代码语言:javascript
复制
select s.studentname, s.id as studentid,s.classid,c.classname,sum(ifnull(r.ratingscore,0)) as ratingscore from student s
join class c on c.id=s.classid
left outer join rating r on r.studentid=s.id
group by s.studentname,r.studentid,s.classid,c.classname
票数 1
EN

Stack Overflow用户

发布于 2016-12-17 09:44:25

你试过这个吗?

代码语言:javascript
复制
SELECT s.studentname,  s.studentid, c.classid, c.classname, SUM(r.ratingscore)
  FROM student as s
INNER JOIN class c on c.classid = s.classid
LEFT OUTER JOIN ratingscore rs ON s.studentid = rs.studentid
GROUP BY s.studentname,  s.studentid, c.classid, c.classname
ORDER BY s.studentid

如果有学生不上课,则必须将内部联接改为左外部联接。

票数 0
EN

Stack Overflow用户

发布于 2016-12-17 10:59:10

代码语言:javascript
复制
SELECT s.studentname AS studentname,  s.id AS studentid, c.id AS classid, c.classname AS classname, SUM(r.ratingscore) AS ratingscore
FROM student AS s
INNER JOIN class AS c ON c.id = s.classid
LEFT JOIN rating r ON r.studentid = s.id
GROUP BY s.id
ORDER BY s.id
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41197238

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档