подзапрос вложенного оператора select возвращает более одной строки - PullRequest
0 голосов
/ 10 января 2012

У меня два студента за столами и другие оценки студенты содержат всю информацию о студентах, такую ​​как имя, фамилия и уникальный номер и оценки содержат оценки, полученные студентами для каждого учащегося сохраняются оценки за каждый год, т. е. ученик с третьего курса будет иметь 3 записи в таблице оценок

Теперь я хочу создать запрос, который будет содержать информацию об учениках и все отметки за три года в одной записи

вывод должен быть таким:

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

Ответы [ 2 ]

0 голосов
/ 10 января 2012

попробуйте под запросом ниже. Я рассматриваю студентов и оценки, у которых есть идентификатор студента в столбце

выберите имя. Имя_стали + '|' + stu.lastname + '|' + marks.1styr + '|' + marks.2nd год + '|' + marks.3rdyr от учеников как stu, отмечает, где stu.uniqueid = marks.uniqueid

0 голосов
/ 10 января 2012

Я не знаю, как выглядит ваше вложенное утверждение, но вы хотите что-то вроде этого:

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

Я сделал условные суммы здесь, а также динамические годы, так как студенты могли приехатьв разное время.Это было бы проще, если бы у вас был годовой стол с такими словами, как «Первокурсник», «Второкурсник» и т. Д., А затем вы отслеживали, когда Студент закончил этот год, но, думаю, это сработает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...