II. Многотабличный запрос
Многотабличный запрос позволяет сформировать записи результата путем объединения взаимосвязанных записей из таблиц базы данных и выбора из них нужных полей и записей. Многотабличный запрос часто осуществляет объединение данных, которые на этапе проектирования были разделены на множество объектов в соответствии с требованиями нормализации. В таких объектах, прежде всего, обеспечивалось отсутствие дублируемости данных в базе, повторяются только значения ключевых полей. В результате выполнения запроса формируется таблица с повторяющимися данными, в которой каждая запись собирает необходимые данные из разных таблиц.
При проектировании и конструировании запроса важнейшим условием является правильное представление о том, как идет объединение записей таблиц при формировании результата.
Рассмотрим технологию конструирования многотабличного запроса на выборку на примере. Допустим, необходимо получить информацию о стоимости автомобилей, заказанных клиентами и количество автомобилей. Результат должен содержать наименование автомобиля, наименование клиента, стоимость автомобиля и количество заказанных автомобилей.
ЗАДАНИЕ 1
Для создания запроса в окне базы данных необходимо:
Выберем вкладку Создание на ленте инструментов. В области Другие щелкните по кнопке Конструктор запросов (рисунок 127).
Рисунок 127 – Кнопка Конструктор запросов
Перед вами откроется окно конструктора запросов (см. рисунок 128).
Рисунок 129 – Окно конструктора запросов.
В окне Добавление таблицы (см. рисунок 130) выберите взаимосвязанные таблицы:
Рисунок 130 – Окно Добавление таблицы
Заказы — для выборки количества заказанных автомобилей (поле «Количество»);
Клиенты — для выборки названия клиента (поле «Название»);
Ассортимент — для выборки наименования товара (поле «Марка»), стоимости автомобилей.
Закройте окно Добавление таблицы.
Результат добавления таблиц представлен на рисунке 131.
Рисунок 131 – Результат добавления таблиц
В окне конструктора запросов будет представлена схема данных запроса, содержащая выбранные таблицы. У таблицы Заказы автоматически установлена связь с таблицами Ассортимент и Клиенты.
Отношения между таблицами схемы данных запроса являются одно-многозначными. Таблица Ассортимент и Клиенты являются подчиненными для таблицы Заказ.
Перетащите с помощью двойного щелчка мыши поля, включаемые в результат выполнения запроса, в строку бланка запроса Поле: «Количество» — из таблицы Заказы; «Название» — из таблицы Клиенты; «Стоимость» и «Марка» — из таблицы Ассортимент (см. рисунок 132).
Рисунок 132 – Окно Бланка запросов
Поскольку в запросе используется несколько таблиц, в бланке запроса удобно видеть наряду с Именем поля Имя таблицы. Если строка Имя таблицы не отображена в бланке запроса, необходимо на ленте инструментов во вкладке Конструктор щелкните по кнопке Имена (рисунок 133).
Рисунок 133 – Имена таблиц
Допустим, необходимо получить информацию о покупке автомобилей конкретных марок — Audi и Ford. В строке Условие отбора, для поля «Марка», запишите наименования этих товаров через логический оператор «or», или же просто в разных строчках бланка запроса. После заполнения бланка запроса он примет вид, представленный на рисунке 134.
Рисунок134 – Вид бланка запросов
Запустите запрос, щелкнув по кнопке Выполнить
Результат выполнения запроса представлен на рисунке 135.
Рисунок 135 – Результат выполнения запроса.
Для того чтобы понять, что получится в результате выполнения запроса, надо знать, в каких отношениях находятся таблицы запроса и как определена связь между ними: установлены ли для связи таблиц параметры обеспечения целостности и какой способ объединения задан для связи.
Сохраните запрос под именем «Количество заказанных автомобилей»
ЗАДАНИЕ 2
Выведите записи о розничных клиентах, заказавших автомобили стоимостью более 600 т.р, от поставщиков American car и Lyngbysild. Сохраните запрос под именем «Розничные клиенты».
Выведите записи о заказах, в которых фигурируют марки автомобилей Volkswagen и Ford, поставщиками которых являются Nokar и Lyngbysild. Сохраните запрос под именем «Volkswagen и Ford».
Выведите записи о менеджерах (телефон и фамилия), которые приняли заказы автомобилей в количестве свыше 2. Сохраните запрос под именем «Количество заказов более двух».
Результат покажите преподавателю.