首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从加入mysql的桌子上清点学生人数

从加入mysql的桌子上清点学生人数
EN

Stack Overflow用户
提问于 2022-04-06 14:17:25
回答 1查看 21关注 0票数 0

我在下面的图标中有数据库。我想要

  1. 统计所有名为Class5的科目和班级的学生。
  2. 有地位的学生的百分比来自有名称心理学的学科和有Class5名称的班级。
  3. 所有的学生和班级的班级名都是男性。

例如,我试过

(英文本:)

代码语言:javascript
运行
复制
SELECT COUNT(student_name) AS NumberOfStudents FROM student_srms JOIN class_srms JOIN subject_srms WHERE class_srms.class_name='Class5' AND subject_srms.subject_name='Psychology'

但是返回NumberOfStudents = 20,但是20都是学生条目。

EN

回答 1

Stack Overflow用户

发布于 2022-04-06 14:25:35

这个问题很可能源于你的FROM条款。仅仅说JOIN是不够的。您需要指定用ON子句连接的两个表之间的列的关系:

代码语言:javascript
运行
复制
FROM student_srms 
    JOIN class_srms 
        ON student_srms.student_id = class_srms.student_id
    JOIN subject_srms
        ON class_srms.subject_id = subject_srms.subject_id

我相信在MySQL中有一个NATURAL JOIN,它将告诉没有ON子句的mysql只是连接两个表之间类似的列名,但我觉得这很脏,如果在共享名称的表中引入新列,而不是引入关系,则可能会在以后的应用程序生命周期中导致失败,所以我只想避开这一点。

根据您在注释中报告的错误,我怀疑显示表/列的图表是不正确的。相反,尝试一下(我现在完全是瞎猜的):

代码语言:javascript
运行
复制
FROM student_srms
    JOIN student_class
        On student_srms.student_id = student_class.class_id
    JOIN class_srms 
        ON student_class.class_id = class_srms.student_id
    JOIN subject_srms
        ON class_srms.subject_id = subject_srms.subject_id

这会在student_class关系表中添加,这样就可以从学生跳到类表。祈祷吧。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71768450

复制
相关文章

相似问题

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