SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 11.03.2010 20:13:46

dbstudent
Участник
Зарегистрирован: 11.03.2010
Сообщений: 2

Помогите

Имеется база student
В ней 4 таблицы: students, groups, marks, subjects.
students(idSt, FIO, idGr, birth)
groups(idGr, groupName)
marks(idSt, idSub, mark, markDate)
subject(idSub, NameSubject)
Нужно вывести группы, в которых все студенты по одному и тому же предмету получили 4.

SELECT DISTINCT g.groupname
FROM groups AS g JOIN students AS s ON s.idGr = g.idGr
WHERE
   s.idst IN (SELECT m.idst
           FROM marks AS m
           WHERE
               s.idSt = m.idSt AND
               mark = 4
           GROUP BY idSub, mark, idSt)

Я попробовал так, но не получается. Я только начинаю работать с MySQL, мне еще сложно, помогите, если кто может.

Отредактированно dbstudent (11.03.2010 21:22:15)

Неактивен

 

#2 11.03.2010 21:00:59

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Помогите

С такими именами студентов даже помогать не хочется sad

SELECT idGr, idSub, GROUP_CONCAT(DISTINCT mark) AS marks
FROM marks m JOIN students s USING (idSt)
GROUP BY 1,2
HAVING marks = '4';

Неактивен

 

#3 11.03.2010 21:05:19

dbstudent
Участник
Зарегистрирован: 11.03.2010
Сообщений: 2

Re: Помогите

Спасибо, а за базу извиняюсь. В следующий раз буду относиться с уважением.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson