ACCESS Вложенные запросы
Основные и вложенные запросы Вложенным называется запрос, результат которого используется как условие отбора в основном запросе. Такие запросы используются, если нужно из базы выбрать записи по неизвестному критерию или сравнить результаты двух запросов. Для выполнения такого сложного запроса достаточно выполнить основной запрос, он автоматически выполняет все вложенные в него запросы.
Пример 1 Из базы данных «Деканат» получить список студентов, которые учатся в одной группе с Ивановым. Эта задача решается в два действия. 1) Создадим сначала запрос (9а1), который определяет, в какой группе учится Иванов. Это простой запрос на выбор.
Пример 1 2) Затем создадим запрос, в котором из таблицы Студенты выбираются записи в которых номер группы совпадает с номером группы из предыдущего запроса (9а1). Здесь результат предыдущего запроса используется как критерий отбора. Это тоже простой запрос. В бланк основного запроса нужно добавить таблицу Студенты и вложенный запрос (9а1). При записи условия имя вложенного запроса берется в квадратные скобки, а между именем запроса и именем поля ставится восклицательный знак. Лучше использовать построитель выражений
Пример 2 В базе данных «Деканат» найти группы, сдавшие английский язык лучше (по среднему баллу), чем 9702 группа. Эта задача решается в три действия. 1) Первый запрос (Запрос 1) вычисляет средний балл по английскому языку в 9702 группе. Это запрос с группировкой. В базе данных «Деканат» найти группы, сдавшие английский язык лучше (по среднему баллу), чем 9702 группа. Эта задача решается в три действия. 1) Первый запрос (Запрос 1) вычисляет средний балл по английскому языку в 9702 группе. Это запрос с группировкой.
Пример 2 2) Второй запрос (Запрос 2) вычисляет средний балл по английскому языку в каждой группе. Это тоже запрос с группировкой.
Пример 2 3) Третий запрос (Запрос 3) использует результат первого запроса (Запрос 1), как критерий отбора для записей второго запроса (Запрос 2). Это простой запрос на выбор. В бланк запроса 3 не добавляются никакие другие таблицы, кроме Запрос 1 и Запрос 2. Важно не перепутать какой запрос исходный, а какой используется как критерий отбора
Пример 3 В базе данных «Деканат» найти самого молодого студента. Эта задача решается в два действия. 1) Первый запрос (Запрос 8а) определяет максимальную дату рождения. Это запрос с группировкой. Результатом его является дата.
Пример 3 2) Второй запрос (Запрос 81) из таблицы Студенты определяет фамилию студента с найденной в запросе 8а датой рождения. Это простой запрос на выборку. Результатом его является фамилия (мог быть и список фамилий).
Пример 4 В базе данных «Деканат» создать запрос «Лучшие в группах» со списком студентов, каждый из которых является лучшим в своей группе (по сумме полученных оценок). Эта задача решается в три действия. 1) Первый запрос (Запрос 1) находит сумму оценок для каждого студента. Это запрос с группировкой. Результатом его является такая таблица:
Пример 4 2) Второй запрос (Запрос 2) находит максимальную сумму оценок в каждой группе. Входными данными для этого запроса будет Запрос1. Это тоже запрос с группировкой. Результатом его является такая таблица:
Пример 4 3) Третий запрос (Запрос3) из таблицы, которая получается в результате выполнения Запроса1 выбирает записи у которых значения полей Группа и Sum-Оценка, совпадают со значениями полей Группа и Max-Sum-Оценка из Запроса2. Таким образом Запрос 1 входная таблица, а поля Запроса2 используются как критерий отбора.
Пример 4 Результатом такого запроса будет таблица: