Php 如何在MySQL中在每个主题下放置主题分数

Php 如何在MySQL中在每个主题下放置主题分数,php,mysql,sql,Php,Mysql,Sql,我有这些桌子: 显示从db中提取后的结果的表: 数据库中的结果表: 数据库中的主题表: 我想实现的是:我希望学生识别号显示一次,每个科目的分数都显示在科目下,就像下图所示。在我的SQL查询中如何处理它 我的源代码: $sql = "SELECT distinct s.regiNo, s.firstName as fname, s.middleName as mname, s.lastName as lname, s.gender, s.class_group, c.subjects, e

我有这些桌子:

显示从db中提取后的结果的表:

数据库中的结果表:

数据库中的主题表:

我想实现的是:我希望学生识别号显示一次,每个科目的分数都显示在科目下,就像下图所示。在我的SQL查询中如何处理它

我的源代码:

$sql = "SELECT distinct s.regiNo, s.firstName as fname, s.middleName as mname, s.lastName as lname, s.gender, s.class_group, c.subjects, e.First_CA, e.Second_CA, e.examid, e.scored, e.internaltype, e.Class, e.Year FROM student s, subjects c, exam e WHERE s.regiNo = e.Roll_Number AND e.sub_id = c.subect_code
";
谢谢。

您似乎想要条件聚合:

select s.regiNo as IdentityNumber, e.Class, s.class_group,
       sum(case when c.subect_code = 'math' then (e.First_CA + e.Second_CA + e.scored) else 0 end) as Mathematics,
       . . .
from student s inner join
     exam e
     on s.regiNo = e.Roll_Number inner join
     subjects c
     on e.sub_id = c.subect_code
group by s.regiNo, e.Class, s.class_group;