В предыдущем примере в условии отбора в качестве операндов использовались только значения для отбора по конкретным полям. Создадим запрос, в условии отбора которого сравниваются значения в разных полях.
Пусть необходимо проверить правильность задания общих часов в таблице ПРЕДМЕТ. По запросу должны отбираться только те записи, в которых значение в поле ЧАСЫ не равно значению, получаемому при сложении значений полей ПР и ЛЕК.
Такое условие записывается в бланке запроса в столбце ЧАСЫ и в нем используются имена полей [ПР] и [ЛЕК].
Рисунок 16
Конструирование многотабличного запроса на выборку
Рассмотрим технологию конструирования многотабличного запроса на выборку на примере получения информации об успеваемости студентов из БД "Учебный процесс".
Запрос на основе нескольких взаимосвязанных таблиц
Пусть необходимо получить информацию об оценках, полученных студентами по всем предметам. Результат должен содержать фамилию студента, наименования сданных предметов и оценки.
Выберем Конструктор запросов.
Формирование схемы данных запроса
В окне Добавление таблицы (Show Table) выберем таблицы:
r СТУДЕНТ — для выборки фамилии студента из поля ФИО
r УСПЕВАЕМОСТЬ — для определения кодов предметов (поле КП), по которым студент сдал экзамены, и выборки оценок по предмету (из поля ОЦЕНКА)
r ПРЕДМЕТ — для выборки наименования предмета (из поля НП), представленного кодом КП в таблице УСПЕВАЕМОСТЬ
Закроем окно Добавление таблицы (Show Table).
В окне конструктора запросов представлена полученная схема данных запроса, содержащая выбранные таблицы. Между таблицами автоматически установлены необходимые связи:
r Одно-многозначная связь между таблицами СТУДЕНТ и УСПЕВАЕМОСТЬ по составному ключу НГ+НС в соответствии с построенной ранее схемой данных
r Связь-объединение между УСПЕВАЕМОСТЬ и ПРЕДМЕТ, поскольку эти таблицы имеют поля с одинаковым именем КП и одинаковым типом данных.
Рисунок 17 Окно запроса об успеваемости студента с созданной схемой данных