ФорумРазработкаБазы данных → Помогите решить задачу

Помогите решить задачу

  • dbstudent

    Сообщения: 3 Репутация: N Группа: Кто попало

    Spritz 11 марта 2010 г. 11:38

    Имеется база 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

    Сообщения: 3 Репутация: N Группа: Кто попало

    Spritz 11 марта 2010 г. 12:02, спустя 23 минуты 41 секунду

    дамп экспериментальной базы http://depositfiles.com/files/wgau31vif
  • dbstudent

    Сообщения: 3 Репутация: N Группа: Кто попало

    Spritz 11 марта 2010 г. 13:17, спустя 1 час 15 минут 13 секунд

    Я решил, ребята, всем вам спасибо.

    SELECT idGr, idSub, GROUP_CONCAT(DISTINCT mark) AS marks
    FROM marks m JOIN students s USING (idSt)
    GROUP BY 1,2
    HAVING marks = '4';
  • Абырвалг

    Сообщения: 6476 Репутация: N Группа: Джедаи

    Spritz 11 марта 2010 г. 13:43, спустя 25 минут 40 секунд

    ты крут. Не, эт не подъеб, правда хорошо учишься

Пожалуйста, авторизуйтесь, чтобы написать комментарий!