mysql - 来自二度连接的列的总和?

标签 mysql sql join subquery

我正在尝试查询 3 个表:studentstemplate_subjectssubjects

studentstemplate_subjects 表有一个 template_code 列,所以我可以通过这个列加入他们(我认为这是一个数据透视表在 template_codes 表和 subjects 表之间。这不是我设计的数据库,现在只是查询它)。

现在,我需要从按 template_code 分组的 subjects 表中获取 units 列的总和。我该怎么做?

这是我到目前为止尝试过的:

SELECT 
s.studNo as 'Student Number',
s.lastName as 'Student Name',
s.template_code as 'Template Code',
(SELECT sum(units) FROM subjects
JOIN template_subjects ON subjects.subject_code=template_subjects.subject_code
GROUP BY s.template_code) as 'Units'
FROM students as s
JOIN template_subjects ON template_subjects.template_code=s.template_code

我希望从查询中得到的是,例如:

Student Number | Student Name | Template Code | Units
201555101        Jane Doe       ACC301          35

其中 Units 是特定模板代码中主题的总单位。 (表名和列的名称要复杂得多,所以我在这个问题中简化了它们。请告诉我我在这个问题中可能写的任何错误或混淆的部分。)

最佳答案

我想你想要这样的东西:

SELECT s.studNo as `Student Number`, s.lastName as `Student Name`,
       s.template_code as `Template Code`,
       (SELECT sum(ts.units)
        FROM template_subjects ts  
        WHERE s.subject_code = ts.subject_code
       ) as Units
FROM students s;

也就是说,您只需要一个相关的子查询,而不是那么多的连接。

关于mysql - 来自二度连接的列的总和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39606235/

相关文章:

php - 删除大于 time() 的记录

mysql - sum 函数返回错误值

php - 获取错误消息 - 调用未定义的方法 mysqli_result::fetch_all()

mysql - 是什么让 `EXPLAIN` 中的行很少的查询变慢?

java - jdbc 到配置单元的连接被拒绝

c++ - boost 线程,测试线程是否准备好加入

mysql - 删除发生时触发添加记录

sql - 如何在具有不同数据类型的列上将表连接在一起?

mysql - 优化从3个表mysql中选择元素的查询

mysql - LEFT JOIN 麻烦