Этот сайт не наркоманов. Это сайт программистов. Здесь курят мануал.

Добро пожаловать на Пыху!

Логин:
Пароль:
 

Нет прописки? Зарегистрируйся!

Новости

Пыха информатор 3.1
Еще более удобное оповещение о флуде!

Краснодарское время: 24 Май, 2012, 05:32:15

Страниц: [1]
Печать
Автор Тема: Помогите решить задачу  (Прочитано 621 раз)
0 Пользователей и 1 Гость смотрят эту тему.
dbstudent    ↓ 
11 Март, 2010, 07:38:38
НЕ ХУЕТА! ХУЕТА!

Карма: 2
Сообщений: 3
Сила слова: 66.67

Имеется база student
В ней 4 таблицы: students, groups, marks, subjects.
students(idSt, FIO, idGr, birth)
groups(idGr, groupName)
marks(idSt, idSub, mark, markDate)
subject(idSub, NameSubject)
Нужно вывести группы, в которых все студенты по одному и тому же предмету получили 4.
 
SQL
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 Март, 2010, 08:02:19 , спустя 23 минуты 41 секунду
НЕ ХУЕТА! ХУЕТА!

Карма: 2
Сообщений: 3
Сила слова: 66.67

дамп экспериментальной базы http://depositfiles.com/files/wgau31vif
Записан
dbstudent    ↓ 
11 Март, 2010, 09:17:32 , спустя 1 час 15 минут 13 секунд
НЕ ХУЕТА! ХУЕТА!

Карма: 2
Сообщений: 3
Сила слова: 66.67

Я решил, ребята, всем вам спасибо.
 
SQL
SELECT idGr, idSub, GROUP_CONCAT(DISTINCT mark) AS marks
FROM marks m JOIN students s USING (idSt)
GROUP BY 1,2
HAVING marks = '4';
Записан
Абырвалг    ↓ 
11 Март, 2010, 09:43:12 , спустя 25 минут 40 секунд
НЕ ХУЕТА! ХУЕТА!

PHP Infected, симфоеб, маконенавистник
Группа: Джедаи

Карма: 80
Сообщений: 6094
Сила слова: 1.31

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

PHP does the job since 1995
Пожалуйста, не надо делать двойные клики по ссылкам. Это создает избыточную нагрузку на сервер
Страниц: [1]
Печать
 

Перейти в: