我有两个表的学生和其他的标记 学生包含类似的名字,姓氏和独特的IDNumber所有学生信息 和标记包含标记为每个学生痕学生 获得存储每年即从三年级学生为将在标记表3项嵌套的SELECT语句子查询返回多行
现在我想设计一个包含学生信息,并在单个记录所有3年标记
输出应该是这样的查询:
First Name | Last Name | 1st Year Marks | 2nd Year Marks | 3rd Year Marks
我有两个表的学生和其他的标记 学生包含类似的名字,姓氏和独特的IDNumber所有学生信息 和标记包含标记为每个学生痕学生 获得存储每年即从三年级学生为将在标记表3项嵌套的SELECT语句子查询返回多行
现在我想设计一个包含学生信息,并在单个记录所有3年标记
输出应该是这样的查询:
First Name | Last Name | 1st Year Marks | 2nd Year Marks | 3rd Year Marks
我不知道你的嵌套的语句是什么样子,但你要沿着这个线的东西:
select
s.firstname,
s.lastname,
sum(case when m.year = m2.minyear then m.mark else 0 end) as `1st Year Marks`,
sum(case when m.year = m2.minyear+1 then m.mark else 0 end) as `2nd Year Marks`,
sum(case when m.year = m2.minyear+2 then m.mark else 0 end) as `3rd Year Marks`
from
students s
inner join marks m on
s.student_id = m.student_id
inner join (select student_id, min(year) as minyear from marks group by student_id) m2 on
s.student_id = m2.student_id
group by
s.firstname,
s.lastname
我在这里做有条件的款项,以及动态年代以来,学生可以到达不同的时间。如果你有一个像“新生”,“大二”等的年表,那么这会更容易,然后跟踪学生什么时候完成了这一年,但这将工作,我想。
试试下面的查询..我考虑学生和标记有sstudent ID列
选择stu.firstname + '|' + stu.lastname +'|' + marks.1styr +'|' + marks.2nd yr +'|'+ marks.3rdyr from students as stu,marks where stu.uniqueid = marks.uniqueid
如果您发布SQL语句,它也会更容易帮助。 – Aaron 2012-01-10 15:52:26
或者至少是表格全定义 – jclozano 2012-01-10 15:56:45