Многотабличный запрос на выборку

Рассмотрим конструирование многотабличного запроса на выборку на примере выборки информации об успеваемости студентов из БД “Учебный процесс”. Пусть необходимо получить информацию об оценках, полученных студентом по всем предметам. Результат должен содержать фамилию студента, наименования сданных предметов и оценки. При создании этого запроса в окне Добавление таблицы выберем таблицы:

СТУДЕНТ - для выборки фамилии студента из поля ФИО;

УСПЕВАЕМОСТЬ - для определения кодов предметов (поле КП), по которым студент сдал экзамены, и выборки оценок по предмету (из поля ОЦЕНКА);

ПРЕДМЕТ - для выборки наименования предмета (из поля НП), представленного кодом КП в таблице УСПЕВАЕМОСТЬ.

В окне Конструктора запросов (рис. 3.3) представлена схема данных запроса, содержащая таблицы, выбранные для данного запроса.

Рис. 3.3. Запрос на получение данных о сдаче экзаменов студентами

Между таблицами автоматически установлены связи:

одно-многозначная связь между СТУДЕНТ и УСПЕВАЕМОСТЬ по составному ключу НГ+НС в соответствии со схемой данных БД (рис.)

связь-объединение между УСПЕВАЕМОСТЬ и ПРЕДМЕТ, поскольку эти таблицы имеют поля с одинаковым именем КП и типом данных.

Поскольку в запросе используется несколько таблиц, в бланке запроса удобно видеть имя наряду с именем поля. Для отображения имени таблицы в бланке запроса выполним команду Вид | Имена таблиц.

Перетащим с помощью мыши поля, включаемые в результат выполнения запроса, в строку бланка запроса Поле: ФИО - из таблицы СТУДЕНТ; НП - из таблицы ПРЕДМЕТ; ОЦЕНКА - из таблицы УСПЕВАЕМОСТЬ.

Для получения информации об успеваемости конкретных студентов - Боярской Н. П. и Маковой - зададим в строке Условие отбора их фамилии. Запишем фамилии в разных строках бланка запроса, поскольку необходимо выбрать записи со значением в поле ФИО - Боярская или Макова. Поскольку инициалы студентки Маковой неизвестны, ее фамилию зададим с использованием символа шаблона звездочка *. После заполнения бланка запроса он примет вид, представленный на рис. 3.3. После ввода фамилии с символом шаблона система вставляет оператор Like (поиск по образцу).

Выполним запрос, нажав на панели Конструктора запросов кнопку Запуск или Представление запроса.

Записи о заданном студенте появятся в результирующей таблице запроса только в том случае, если запись об этом студенте содержится в таблице СТУДЕНТ и в таблице УСПЕВАЕМОСТЬ имеются записи, связанные с записью о студенте. Рассмотрим формирование записей результата (рис. 3.4).

Рис. 3.4. Результат выполнения запроса об оценках заданных студентов

По заданным ФИО студента (Боярская Н. П.) в таблице СТУДЕНТ отыскивается запись. По значению ключа связи НГ + НС осуществляется выборка подчиненных записей из таблицы УСПЕВАЕМОСТЬ с оценками данного студента по разным предметам (в поле ОЦЕНКА). Для каждой из этих записей по значению ключа связи КП выбирается одна запись с наименованием предмета (НП) из таблицы ПРЕДМЕТ.

Таким образом, таблица с результатом запроса (рис. 3.4) будет содержать по одной записи о каждом предмете, сданном студентом. Аналогично формируются записи для второго заданного в запросе студента - Маковой.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: