![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
любитель-далеко не
Участник клуба
Регистрация: 13.04.2010
Сообщений: 1,156
|
![]()
Доброго времени суток))
Товарищи , помогите разобраться - есть три таблицы - Код:
подскажите логику рассуждений при составлении подобного запроса!)) Заранее благодарю) |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,238
|
![]()
тут вопрос упирается в:
1) что такое "положительные оценки" ? Подозреваю 4 и 5 ? Или все оценки больше нуля считать "положительными" ![]() 2) те записи, для которых нет данных выбирать или нет? Поясню, допустим, студен 1 сдал один экзамен на четыре, а другой на пять. а студент 2 сдал один экзамен на пять а студент 3 вообще не сдавал экзамены. вопрос - кто из них имеет "положительные оценки по всем предметам" ? А так я бы предложил выбирать студентов, у которых нет предметов, для которых отсутствуют записей в таблице EXAM_MARKS (условие, что сданы все предметы) и те, кого нет в выборке c неположительными оценками: where STUDENT_ID not in (select STUDENT_ID from EXAM_MARKS where MARK < 4) |
![]() |
![]() |
![]() |
#3 | |
любитель-далеко не
Участник клуба
Регистрация: 13.04.2010
Сообщений: 1,156
|
![]()
Serge , приветствую! ))
Конечно, вы правы - всё так и надо - Цитата:
Код:
|
|
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,238
|
![]()
vedro-compota, надеюсь, всё получилось?
если не получится - пишите, вместе набросаем запросец! К слову. Таблицы весьма выхолощены! По хорошему, не хватает многих сущностей. Ну я не говорю уж о дате сдачи, о учебном годе и прочих "мелочах", но, как минимум, должна была быть таблица со списком предметов, которые студенты должны были сдать в эту сессию. Раз этой таблицы нет, то можно считать, что студенты должны сдать ВСЕ предметы из имеющихся в таблице SUBJECT |
![]() |
![]() |
![]() |
#5 | ||
любитель-далеко не
Участник клуба
Регистрация: 13.04.2010
Сообщений: 1,156
|
![]() Цитата:
Код:
Цитата:
Serge, логика подзапросов вроде теперь е понятна.......но чтобы наглядно доказать то, что у студента все оценки положительные -и вообще вывести на экран таблицу - с множеством столбцов (в этом примере - так - Код:
Последний раз редактировалось vedro-compota; 25.12.2010 в 13:57. |
||
![]() |
![]() |
![]() |
#6 | ||
Старожил
Регистрация: 09.01.2008
Сообщений: 26,238
|
![]() Цитата:
но запросы - они же разные могут быть. и, если бы в запросе получались данные из двух связанных таблиц: STUDENT и EXAM_MARKS то по каждому студенту выведется столько строк, сколько у студента оценок... тогда может и прийдётся сворачивать результаты запроса... Цитата:
Дело в том, что классический SQL предназначен для получения данных в виде, соответствующем понятию реляционных БД - столбы - это различные характеристики (сущности), а строки - значения (величины) этих сущностей. "разворот" реляционных данных в строчку - противоречит принципам SQL и обычно выполняется с помощью разных приёмов и трюков... (а часто такие вещи можно решить только с помощью серверной логики (скрипты, Transact-SQL, PL/SQL и т.д.) Поэтому, прежде чем решить, что Вам РЕАЛЬНО нужно получить оценки в одну строчку - нужно трижды подумать! Точно ли это надо? Сколько оценок будет у каждого студента? Что будет для тех, у кого, допустим две оценки по одному предмету и т.д. и т.п.... Традиционное решение такое: делается столько UNION (или вложенных запросов) сколько различных столбцов с оценками будет в результирующей выборке. и потом они собираются в одну строчку... в качестве иллюстрации посмотрите тему: Запрос со связанными таблицами |
||
![]() |
![]() |
![]() |
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Запрос на выборку из нескольких таблиц | bullvinkle | Microsoft Office Access | 9 | 11.04.2012 04:35 |
Запрос из двух таблиц | SERG1980 | БД в Delphi | 8 | 18.11.2010 23:05 |
Запрос из двух таблиц | T@tali | Microsoft Office Access | 0 | 18.05.2010 21:32 |
запрос из 2-х таблиц | Lokos | SQL, базы данных | 9 | 23.12.2009 00:55 |
Запрос по выборке таблиц в Accesse. | Droid | БД в Delphi | 3 | 25.11.2009 15:55 |