来自2个表的SQL条件SELECT

时间:2013-03-12 14:04:29

标签: sql select conditional

我是SQL的新手,希望我可以通过以下查询获得一些帮助。

我有3张桌子:

  • 学生(姓名,student_id);
  • exam_results(module_code,student_id数据,等级);
  • 项目(module_code,student_id数据,等级)。

我想选择学生姓名,成绩和module_code,但是有些模块既有考试也有与之相关的项目。因此,如果是这种情况,我希望评分为项目和考试的平均分,否则只是考试成绩。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

SELECT s.student_id, s.name, m.module_code, avg(m.grade) as grade from students s 
inner join 
(select module_code, student_id, grade from exam_results 
union all select module_code, student_id, grade from projects) as exam_module m 
on s.student_id = m.student_id
group by s.student_id, s.name, m.module_code