我如何在一组记录上重复一个SQL查询? 我有一个学生,他将接受来自不同学科的考试。学生可以为一个学科提交多个考试。 您可以从他们完成的考试中推断出学生正在参加的学科...

问题描述 投票:0回答:1

您可以从他们完成的考试中推断出学生正在接受的学科。

SELECT subject FROM subject JOIN exam ON subject.idx = exam.subject_idx JOIN student ON exam._student_idx = student.idx WHERE student.name = 'Joe Bloggs'

您还可以查询给定学科和学生的最新考试: Diagram of db schemaSELECT exam FROM exam JOIN subject ON exam.subject_idx = subject.idx JOIN student ON exam.student_idx = student.idx WHERE subject.name = 'math' AND student.name = 'Joe Bloggs' ORDER BY completed_at DESC LIMIT 1 caviven某个学生“ Joe Bloggs”,您如何获得对学生参加的所有学科的最新测试?合乎逻辑的方法是获得第一个查询的主题,并在第二个查询中迭代主题,但我不确定如何做到这一点,或者这是最好的方法。

未见,但在我看来,您只需要SQL
groupby

select max(completed_at) as completed_at, subject.name as SubjectName, student.name as StudentName from exam inner join subject on exam.subject_idx = subject.idx inner join student on exam.student_idx = student.idx group by subject.name, student.name order by student.name, subject.name
使用

cte的天这些问题也非常常见:

with cte as ( select exam.completed_at, subject.name as SubjectName, student.name as StudentName, row_number() over (partition by student.name, subject.name order by exam.completed_at desc) as RowNumber from exam inner join subject on exam.subject_idx = subject.idx inner join student on exam.student_idx = student.idx ) select cte.completed_at, cte.SubjectName, cte.StudentName from cte where cte.RN = 1 order by cte.StudentName, cte.SubjectName
sql sqlite
1个回答
0
投票
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.