sql查询用外键显示所有结果

时间:2013-10-24 16:01:47

标签: sql

我有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在同一学期给出了两个模块,但只得到一个模块结果

有人可以帮忙吗?

提前致谢

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分: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