Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как написать этот запрос MySQL?

Иван Карташов Ученик (133), на голосовании 3 года назад
Вот фото таблиц. Но насколько я понял, в этом запросе участвует только таблица exam_marks.
Сам запрос: Напишите запрос, выполняющий вывод количества предметов, по которым экзаменовался каждый студент, сдавший более 20 предметов.
Долго ломаю уже над этим голову. Пока что смог написать только запрос, который возвращает student_id студентов, которые сдали более 20 предметов. А как выбрать повторяющиеся значения subj_id у каждого студента из этого списка ума не приложу.
Голосование за лучший ответ
Юрий Копнин Мыслитель (8099) 4 года назад
with stud as
(
select m.student_id, count(*) from exam_marks m
group by m.student_id
having count(*)>= 20
)

select s.student_id, s.sub_id, s.mark, s.exam_date,
t.surname, t.name,
c.subj_name
from exam_marks s
left join student t on t.student_id = s.student_id
left join subject c on c.subj_id = s.subj_id
where s.student_id in (select stud.student_id from stud)
order by s.student_id

Выведет всех студентов сдавших более 20 предметов и наименование сданых предметов по каждому студенту, если конечно MySQL поддерживает CTE

Если просто вывести количество сданных предметов циферкой по каждому студенту, то:
select m.student_id, t.surname, t.name, count(*) as kolpredmet
from exam_marks m
left join student t on t.student_id = s.student_id
group by m.student_id, t.surname, t.name
having count(*)>= 20
Похожие вопросы