Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.01.2011, 11:36   #1
vedro-compota
любитель-далеко не
Участник клуба
 
Аватар для vedro-compota
 
Регистрация: 13.04.2010
Сообщений: 1,156
По умолчанию MySQL сравнение множества с множеством.

Снова приветствую)
Не могу понять логику решения следующего задания - пожалуйста подскажите) -
имеется две таблицы-
Код:
 table STUDENT
(
  STUDENT_ID NUMERIC not null,
  SURNAME    VARCHAR(60),
  NAME       VARCHAR(60),
  STIPEND    NUMERIC(16,2),
  KURS       NUMERIC,
  CITY       VARCHAR(60),
  BIRTHDAY   DATE,
  UNIV_ID    NUMERIC
);
 table EXAM_MARKS
(
  EXAM_ID    NUMERIC not null,
  STUDENT_ID NUMERIC not null,
  SUBJ_ID    NUMERIC not null,
  MARK       NUMERIC,
  EXAM_DATE  DATE
);
требуется -
Цитата:
Написать запрос выполняющий вывод данных о фамилиях студентов, имеющих полный набор оценок (пятёрки, четвёрки,тройки.)
собственно говоря, не понятно как можно сравнивать последовательно несколько значений со множеством (3,4,5) и при этом ещё узнать - удачно ли прошло сравнение.
Подскажите логику) не хватает)

Заранее благодарю)
против абортов=за + жизнь;.фкн вгу;_______________________мойблг

Последний раз редактировалось vedro-compota; 31.01.2011 в 12:41.
vedro-compota вне форума Ответить с цитированием
Старый 31.01.2011, 13:13   #2
Cronos20
Форумчанин
 
Регистрация: 08.07.2010
Сообщений: 679
По умолчанию

Первое что приходит в голову, это курсором проходить по записям оценок каждого студента и возвращать его ID в случае нахождения всех вариантов оценок.
Хотя по мне задача сугубо теоретическая и таким способом съест кучу ресурсов при большом количестве записей.
Cronos20 вне форума Ответить с цитированием
Старый 31.01.2011, 13:25   #3
vedro-compota
любитель-далеко не
Участник клуба
 
Аватар для vedro-compota
 
Регистрация: 13.04.2010
Сообщений: 1,156
По умолчанию

Цитата:
возвращать его ID в случае нахождения всех вариантов оценок.
да ) только как можно проверить наличие всех вариантов?
против абортов=за + жизнь;.фкн вгу;_______________________мойблг
vedro-compota вне форума Ответить с цитированием
Старый 31.01.2011, 13:26   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
собственно говоря, не понятно как можно сравнивать последовательно несколько значений со множеством (3,4,5) и
ну, как минимум два варианта решения сразу лежат на поверхности:
"в лоб ":
Код:
SELECT STUDENT_ID from STUDENT
where STUDENT_ID in (select STUDENT_ID from EXAM_MARKS where MARK=5)
and STUDENT_ID in (select STUDENT_ID from EXAM_MARKS where MARK=4)
and STUDENT_ID in (select STUDENT_ID from EXAM_MARKS where MARK=3)
второе решение сейчас лень расписывать, но можно сгруппировать записи по оценкам и студентам (STUDENT_ID):
select MARK, STUDENT_ID from EXAM_MARKS group by MARK, STUDENT_ID

потом взять из этого подзапроса select count(*), STUDENT_ID from (подзапрос_выше) where MARK>3 group by STUDENT_ID
ну и потом взять тех студентов, которые есть в полученной выборке.

Последний раз редактировалось Stilet; 31.01.2011 в 14:35.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 31.01.2011, 13:40   #5
vedro-compota
любитель-далеко не
Участник клуба
 
Аватар для vedro-compota
 
Регистрация: 13.04.2010
Сообщений: 1,156
По умолчанию

Serge, спасибо!)
что-то я не сообразил про in+and)
против абортов=за + жизнь;.фкн вгу;_______________________мойблг
vedro-compota вне форума Ответить с цитированием
Старый 31.01.2011, 14:02   #6
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

хехе, значит из прошлой темы вы мало что поняли =) опять же in
NiCola999 вне форума Ответить с цитированием
Старый 31.01.2011, 14:05   #7
vedro-compota
любитель-далеко не
Участник клуба
 
Аватар для vedro-compota
 
Регистрация: 13.04.2010
Сообщений: 1,156
По умолчанию

Цитата:
значит из прошлой темы вы мало что поняли =) опять же in
может и так. не спорю.
против абортов=за + жизнь;.фкн вгу;_______________________мойблг
vedro-compota вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
обновление в блоге - Работа с MySQL в С++ с использованием библиотеки mysql++ Pblog Обсуждение статей 0 16.08.2009 16:00
Помогите разобраться с множеством albatros Общие вопросы Delphi 2 22.02.2009 15:33
Проблемы с одним клиентом и множеством серверов Maxxon Работа с сетью в Delphi 5 28.08.2007 17:27
Множества... сравнение алфавитов Верчик Помощь студентам 6 11.06.2007 00:28