1

我有 2 个主表

Semesters (Sem_id(PK),Sem_name) 
Modules (Mod_id(PK),Mod_Name,Unit_id)

还有一个名为 result_summary 的表,用于保存学期和模块的外键

(Res_sum_id(PK),Sem_id(FK),Mod_id(FK)) 

决赛桌 Semester_Results 输入学生在特定模块中的成绩,该模块发生在特定学期

(Sum_res_id(PK),Res_sum_id(FK),Student_id(FK),Grade_id(FK))

我写了下面的查询

select m.Mod_id,m.Mod_Name, s.semester_name,g.Grade_id
from exa_modules m, exa_grades g, exa_semesters s, exa_results_summary rs,
exa_semester_results sr
where m.Mod_id=rs.Mod_id
and rs.Res_sum_id=sr.Res_sum_id
and s.Sem_id=rs.Sem_id
and sr.grade_id=g.grade_id
and student_id=3
group by rs.semester_id

上述查询给出了一个结果,但在一个学期内不显示超过 1 个模块结果。

例如。学生 1 在同一学期完成了两个模块,但只获得了一个模块结果

有人可以帮忙吗?

提前致谢

4

2 回答 2

0

您需要按学期和学生上课的模块进行分组......否则它只需要基于一个学期的所有记录中的第一个。

于 2013-10-24T17:34:57.323 回答
0

我设法使用相同的查询获取其他行。但是,(我还发布了一个关于此的新问题)结果在单独的视图中以单独的行显示。

这是我使用的查询:

select m.unit_id,m.module_name,g.grade_short, s.semester_name
from exa_modules m, exa_grades g, exa_semesters s, exa_results_summary rs, exa_semester_results sr
where m.module_id=rs.module_id
and rs.result_sum_id=sr.result_sum_id
and s.semester_id=rs.semester_id
and sr.grade_id=g.grade_id
and user_id=3
group by rs.result_sum_id, rs.semester_id
order by s.semester_id
于 2013-10-29T15:09:29.183 回答