_______________________________________________________________________________________________________________________________________________________________________________________________________
__student3______95_____92_____97__
__student4______97_________91___
学生姓名来自学生表
科目1,科目2,科目来自科目表的唯一记录
,然后
成绩表
是可能的还是我的数据库模式设计不好?
以下是表记录
Student table |student_id | student_name| | 1 | student1 | | 2 | student2 |
Subject table |subject_id | subject_name| | 1 | subject1 | | 2 | subject2 | | 3 | subject3 |
Grade table | grade_id | grade | 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 |
一般的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;
问题内容: 我在SQL Server输出中有一个查询, 假设我有一个具有某些字段的表(Ex.StudentMaster)-没有唯一约束。对于前 RollNumber和Name该表具有相同的数据。例如: 我只想获得第三条记录。如何识别此唯一记录? 问题答案: 任何一行都是第三行:-) 删除“第三”行:-) 删除最后一行:
我有一个包含用户及其密码的数据库。当我启动应用程序时,我会创建一些具有角色的用户,并将其存储到数据库中。我的用户实体: 和用户角色实体 默认情况下,列角色是唯一的=false,但当我添加userA与角色:管理员,用户,然后userB与角色:用户,记录userB-用户覆盖记录userA-用户。有人能指出我的错误是什么吗? 我正在使用hibernate 5 spring 5
我有两张桌子: 表1: 如果两个表都有类似“city”的列,例如 城市 ========== 伦敦 伦敦 伦敦 巴黎 巴黎 纽约 解决方案会是什么样子???
问题内容: 我想在服务器中使用列作为表 但这出错了 当我将的类型更改为varchar时..它起作用了! 你能告诉我是否可以使文本列为 问题答案: 基本上,您不能将列用作键。因为实际上这么大的列将不是唯一的,并且可能会出现更多重复的情况。因此,寻找方法并将该输出用作UNIQUE约束。 希望这对您有帮助
我有以下问题,我有一个已经存在的表,有三个字段field1,field2,field3。Field1实际上是另一个表的外键(@OneToOne)。所有字段2和字段3都可以为空,所以我不能为所有三个字段设置主键。在数据库中,field1 field2 field3有一个唯一约束。 我用JPA/Hibernate尝试了几种解决方案,但没有找到一个好的。如果不定义@Id,JPA当然无法工作。在@Embe
我正在创建一个包含一个用户实体的Spring Boot应用程序。 我想实现一个功能,管理员可以使用不同的过滤器搜索用户,过滤器可以是用户表中的一列或多列。 下面是用户实体类: 搜索用户时,只有名字可以是筛选器,或者在某些时候,名字和姓氏都可以是筛选器,或者如果需要,其他一些列值(ID、电子邮件和联系人)也可以与它们一起用作筛选器。筛选器的选择将完全是管理员在运行时的选择。 有人能指导我如何使用JP