我的 MySQL 表中有三个相同的表,即
first_term_result、second_term_result 和 third_term_result
这是其中的列
exam_type_id | student_id | subject_id | mark |
或带有虚拟数据的示例
注意:每个科目有三种不同的考试类型(CA1、CA2、CA3 和考试),有三个像这样的表格,内容相同但数据不同,因为它保存第一学期的数据,第二学期的数据和第三学期的最后一个数据.
first_term_result:
exam_type_id | student_id | subject_id | mark |
1 | 6 | 7 | 12 |
2 | 6 | 7 | 9 |
3 | 6 | 7 | 13 |
4 | 6 | 7 | 45 |
1 | 4 | 7 | 7 |
2 | 4 | 7 | 5 |
3 | 4 | 7 | 10 |
4 | 4 | 7 | 34 |
second_term_result:
exam_type_id | student_id | subject_id | mark |
1 | 6 | 7 | 15 |
2 | 6 | 7 | 6 |
3 | 6 | 7 | 10 |
4 | 6 | 7 | 50 |
1 | 4 | 7 | 6 |
2 | 4 | 7 | 3 |
3 | 4 | 7 | 9 |
4 | 4 | 7 | 44 |
third_term_result:
exam_type_id | student_id | subject_id | mark |
1 | 6 | 7 | 17 |
2 | 6 | 7 | 8 |
3 | 6 | 7 | 15 |
4 | 6 | 7 | 67 |
1 | 4 | 7 | 12 |
2 | 4 | 7 | 8 |
3 | 4 | 7 | 12 |
4 | 4 | 7 | 50 |
现在我想要实现的是按学生姓名获取每个SUM()
学生的subject_id=7 组。first_term_result.mark
second_term_result.mark
third_term_result.mark
WHERE
另一个非常重要的问题是我将为每个学生计算 first_term+second_term+third_term 的总和,并且还希望能够为该学生和 DESC 中的科目订购总和,所以如果可以的话,我可以相应地定位它们在php上更容易请告诉我。
谢谢
这对我来说似乎很复杂,但我知道这里有大师可以做到这一点,我在某处读到即使使用汇总也可以订购。
下面是我的代码,它显然不起作用。
SELECT CONCAT(s.fname,' ',s.mname,' ',s.lname) AS sname,
SUM(f.mark) AS first_total,
SUM(se.mark) AS second_total,
SUM(t.mark) AS third_total
SUM(f.first_total,second.total,third_total) as GT // just to show my intention
FROM students s, first_term_result f, second_term_result se, third_term_result t
WHERE s.studentID=f.student_id AND
s.studentID=se.student_id AND
s.studentID=t.student_id AND
f.subject_id=7 AND
se.subject_id=7 AND
t.subject_id=7
GROUP BY sname ORDER BY GT DESC