我正在尝试查询3个表:students
,template_subjects
和subjects
。
students
和template_subjects
表格有template_code
列,因此我可以通过此列加入它们(我认为这是template_codes
表格之间的数据透视表。 subjects
表。这不是我设计的数据库,只是现在查询它。
现在,我需要获取units
表中subjects
列的总和,该template_code
表按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
其中split
是某个模板代码中主题的总单位。 (表名和列的名称要复杂得多,所以我在这个问题中对它们进行了简化。请告诉我在这个问题上可能写的任何错误或令人困惑的部分。)
答案 0 :(得分:1)
我想你想要这样的东西:
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;
也就是说,你只需要一个相关的子查询,而不是那么多的连接。
答案 1 :(得分:1)
如果有人需要答案,我就是这样做的:
SELECT
s.studNo as 'Student Number',
s.lastName as 'Student Name',
s.template_code as 'Template Code',
(SELECT sum(units)
FROM template_subjects
JOIN subjects ON template_subjects.subject_code=subjects.subject_code
WHERE template_subjects.templade_code=s.template_code) as 'Units'
FROM students as s
JOIN template_subjects ON template_subjects.template_code=s.template_code
请注意子查询中的这种差异:
WHERE template_subjects.templade_code=s.template_code
而不是:
GROUP BY s.template_code
而且,我没有在子查询中查询subjects
表本身,而是查询了template_subjects
并加入了subjects
表。