Php 根据sql查询结果动态创建HTML表
如何编写sql查询以从多个MySQL表中获取行,然后将其输出到HTML表,格式如下所示。 我已经试了几个小时了,但还是不明白 下面是我试图创建的HTML结构Php 根据sql查询结果动态创建HTML表,php,mysql,sql,Php,Mysql,Sql,如何编写sql查询以从多个MySQL表中获取行,然后将其输出到HTML表,格式如下所示。 我已经试了几个小时了,但还是不明白 下面是我试图创建的HTML结构 ---------------------------------------------------------------- |student_id | full_name | TERM 1 | TERM2 | TERM 3 | TERM 4 | -----------------------------------------
----------------------------------------------------------------
|student_id | full_name | TERM 1 | TERM2 | TERM 3 | TERM 4 |
----------------------------------------------------------------
| 1 | John Doe | 67 | 90 | NA | NA |
| 2 | John Smi | NA | NA | NA | NA |
| 3 | Doe John | 88 | 66 | NA | NA |
| 4 | Mike Doe | 57 | 78 | NA | NA |
| 5 | Doe Mike | NA | NA | NA | NA |
| 6 | Sam Doe | NA | NA | NA | NA |
----------------------------------------------------------------
下面是MySQL表的结构
--------------------------
| student_id | full_name |
--------------------------
| 1 | John Doe |
| 2 | John Smi |
| 3 | Doe John |
| 4 | Mike Doe |
| 5 | Doe Mike |
| 6 | Sam Doe |
--------------------------
------------------------
| exam_id | exam_name |
------------------------
| 11 | TERM 1 |
| 12 | TERM 2 |
| 13 | TERM 3 |
| 14 | TERM 4 |
------------------------
----------------------------------------
| subject_id | exam_id | subject_name |
----------------------------------------
| 1 | 11 | mathematics |
| 2 | 11 | english |
| 3 | 11 | physics |
| 4 | 12 | mathematics |
| 5 | 12 | english |
| 6 | 12 | physics |
----------------------------------------
---------------------------------------------
| subject_id | marks | student_id |
---------------------------------------------
| 1 | 67 | 1 |
| 2 | 54 | 4 |
| 3 | 88 | 3 |
| 4 | 90 | 1 |
| 5 | 78 | 4 |
| 6 | 66 | 3 |
---------------------------------------------
谢谢。这是您想要的查询:
select s.student_id,
s.full_name,
avg(case when te.exam_name = 'TERM 1' then sm.marks else null end) as term_1,
avg(case when te.exam_name = 'TERM 2' then sm.marks else null end) as term_2,
avg(case when te.exam_name = 'TERM 3' then sm.marks else null end) as term_3,
avg(case when te.exam_name = 'TERM 4' then sm.marks else null end) as term_4
from students s
left join subject_marks sm
on s.student_id = sm.student_id
left join subject_exams se
on sm.subject_id = se.subject_id
left join term_exams te
on se.exam_id = te.exam_id
group by s.student_id,
s.full_name
小提琴:
至于将其输出到HTML表,您想看看PHP/MySQL教程。您停留在哪一部分?你有任何代码吗?@danronmoon实际上我所有的查询都不起作用,如果我能知道如何进行itA,那么学生在同一学期可以有多个分数,对吗(即使你的例子中没有)?那样的话你想要什么?该学生/学期所有分数的平均值是多少?@BrianDeMilia,是的,一个学生在一个学期可以有多个分数。因此,我想生成一个包含学生姓名、考试类型和相应分数的表。@Brain Demilia,请你向我解释一下为什么你在查询中使用了average函数?@user1862764,因为如果一个学生在同一学期中的分数超过1分,它将显示平均值。如果他们只有1,它将只显示1。无论您必须使用什么聚合函数来为每个学生和名称获取1行。