使用唯一记录作为表头

JLineses

我有这三张桌子

  1. 学生桌 [student_id(pk), firstname, lastname]
  2. 主题表 [subject_id(pk), subject_title]
  3. 成绩表 [score_id(pk), score, student_id(fk), subject_id(fk)]

有没有一种方法可以提出查询,以便以这种形式将其显示到表中:

_______________________________________
| 学生姓名| 主题1 | 主题2 | 主题3 |
-------------------------------------------------- ------------
| __student1 ___ | ___ 98 ____ | ___ 92 ___ | ___ 97 ___ |
| __student2 ___ | ___ 93 ____ | ___ 91 ___ | ___ 95 ___ |
| __student3 ___ | ___ 95 ____ | ___ 92 ___ | ___ 97 ___ ||
| __student4 ___ | ___ 97 ____ | ___ 95 ___ | ___ 91 ___ ||

学生姓名来自“学生”表“
科目1”,“科目2”,“科目”来自科目表的唯一记录,
然后
来自“成绩”表

有可能还是我的数据库架构设计不好?

这是表格记录

学生表
| student_id | 学生名| 
| 1 | 学生1 | 
| 2 | 学生2 |
主题表
| subject_id | subject_name | 
| 1 | subject1 | 
| 2 | subject2 | 
| 3 | subject3 |
成绩表
| grade_id | 等级| subject_id | student_id | 
| 1 | 87 | 1 | 1 | 
| 2 | 87 | 2 | 1 | 
| 3 | 87 | 3 | 1 | 
| 4 | 87 | 1 | 2 | 
| 5 | 87 | 2 | 2 | 
| 6 | 87 | 3 | 2 |
戈登·利诺夫(Gordon Linoff)

通用的SQL方法是使用条件聚合:

select s.studentName,
       max(case when s.subjectName = 'subject1' then g.grade end) as Subject1,
       max(case when s.subjectName = 'subject2' then g.grade end) as Subject2,
       max(case when s.subjectName = 'subject3' then g.grade end) as Subject3
from (students s join
      grades g
      on s.student_id = g.student_id
     ) join
     subjects su
     on g.subject_id = su.subject_id
group by s.studentid, s.studentName;

一些数据库也支持pivot执行此操作语法。

编辑:

访问查询是:

select s.studentName,
       max(iif(s.subjectName = 'subject1', grade,  NULL)) as Subject1,
       max(iif(s.subjectName = 'subject2', grade,  NULL)) as Subject2,
       max(iif(s.subjectName = 'subject3', grade,  NULL)) as Subject3
from students s inner join
     grades g
     on s.student_id = g.student_id inner join
     subjects su
     on g.subject_id = su.subject_id
group by s.studentid, s.studentName;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

选择唯一记录

来自分类Dev

使用 awk 获取唯一记录数

来自分类Dev

如何使用SQL消除唯一记录?

来自分类Dev

MySQL查询以查找唯一记录

来自分类Dev

从查询中查找唯一记录

来自分类Dev

MySQL:批量更新唯一记录

来自分类Dev

如何仅选择唯一记录

来自分类Dev

INSERT查询唯一记录-MySQL

来自分类Dev

MySQL-返回唯一记录

来自分类Dev

Mysql唯一记录2列

来自分类Dev

如何获得唯一记录

来自分类Dev

从联结表中获取数据作为唯一记录的值列表

来自分类Dev

使用has_many从一系列模型中收集唯一记录

来自分类Dev

Mysql唯一记录,其中存在多个记录

来自分类Dev

Mysql唯一记录,其中存在多个记录

来自分类Dev

多个线程使用的Post Sharp属性内部的唯一记录器

来自分类Dev

如何在SQL Server中使用repect到Date获取唯一记录

来自分类Dev

如何使用周数选择唯一记录 ID 的 MYSQL PHP

来自分类Dev

如何在不使用 distinct 的情况下显示唯一记录?

来自分类Dev

只为SQL中的条件选择唯一记录

来自分类Dev

如何在Rails中显示唯一记录?

来自分类Dev

仅返回此ActiveRecord查询中的唯一记录

来自分类Dev

获取每个值的唯一记录总数

来自分类Dev

MySQL查询查找唯一记录

来自分类Dev

Python从csv文件中提取唯一记录

来自分类Dev

我如何从mongodb获取唯一记录?

来自分类Dev

MySQL在两列上选择唯一记录

来自分类Dev

如何按行数在python中查找唯一记录?

来自分类Dev

Laravel:从数据库中检索唯一记录