嵌套的select语句子查询返回多行

时间:2012-01-10 15:50:16

标签: mysql sql

我有两个学生表,另一个是商标 学生包含所有学生信息,如名字,姓氏和唯一身份号码 和标记包含学生获得的标记 对于每个学生,每年都会存储商标,即第三年的学生将在商标表中有3个条目

现在我想设计一个查询,其中包含学生信息和单个记录中的所有三年标记

输出应该是这样的:

First Name | Last Name | 1st Year Marks | 2nd Year Marks | 3rd Year Marks

2 个答案:

答案 0 :(得分:0)

我不知道你的嵌套语句是什么样的,但你想要的是:

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

我在这里做了有条件的总和,以及充满活力的岁月,因为学生可以在不同的时间到达。如果你有一个像“新生”,“大二学生”等年份表,然后跟踪学生何时完成那一年,这会更容易,但我认为这将有效。

答案 1 :(得分:0)

尝试下面的查询..我正在考虑学生和标记在列

中有sstudent id

选择stu.firstname +'|' + stu.lastname +'|' + marks.1styr +'|' + marks.2nd yr +'|'+ marks.3rdyr来自学生作为stu,标记stu.uniqueid = marks.uniqueid