Внутреннее соединение
Внутреннее
соединение двух таблиц по одному полю в реляционной базе данных строится на
основе отношения "один-ко-многим". Примером может служить демонстрационная
база данных "Борей" (Northwind), в которой все соединения являются
внутренними соединениями по одному полю на основе указанного отношения. В ходе
разработки баз данных, в которых предполагается использование запросов на основе
внутренних соединений, придерживайтесь следующих правил.
В качестве
примера использования запроса на основе внутреннего соединения по одному полю
в базе данных "Борей" (Northwind) построим отчет с указанием марки
товара, его поставщика, единицы измерения товара и его цены:
Рис. 4.20.
Окно Конструктора запроса с изображением соединения полей таблиц
Рис. 4.21.
Бланк запроса с заполненными полями в режиме Конструктора
Нажмите кнопку
Запуск
(Run) либо выберите
Режим таблицы
(Query View) в списке
кнопки Вид (View) на панели инструментов для отображения результата запроса
(рис. 4.22). Обратите внимание на то, что заголовками полей в созданном наборе
записей являются подписи полей таблицы (включающие пробелы), а не их имена,
в которых пробелы обычно не используются.
Рис. 4.22.
Результирующее множество запроса
После выполнения
запроса Microsoft Access выводит на экран результирующее множество, записи которого
упорядочены по значению первичного ключа (так же, как и при просмотре таблицы).
Чтобы изменить порядок сортировки, например, упорядочить записи по убывающей
цене товара:
Рис. 4.23.
Результат запроса с сортировкой по убывающей цене товара
Аналогично
создаются запросы, в которых участвует несколько связанных таблиц, образующих
цепочку. При этом в результат запроса могут быть включены поля из всех таблиц,
участвующих в запросе, или только поля из таблиц, находящихся на концах такой
цепочки (рис. 4.24). Во втором случае таблицы на концах цепочки оказываются
связанными косвенно, и чтобы правильно построить запрос, соединяющий поля этих
таблиц, необходимо включить в запрос каждую таблицу, участвующую в соединении.
Например, можно вывести названия стран, товары из которых покупаются клиентами.
В данном случае косвенно оказываются связанными таблицы "Клиенты"
(Customers) и "Поставщики" (Suppliers), а промежуточными таблицами
оказываются таблицы "Заказы" (Orders), "Заказано" (Order
Details), "Товары" (Products). Microsoft Access автоматически показывает
связи, в том числе и промежуточные, между таблицами.
После добавления
в бланк запроса полей "Название" (CompanyName) из таблицы "Клиенты"
(Customers) и "Страна" (Country) из таблицы "Поставщики"
(Suppliers) выберите команду
Вид, Режим SQL
(View, SQL View) для того,
чтобы просмотреть инструкцию SQL, соответствующую данному запросу (рис. 4.25).
Соединения таблиц задаются операцией INNER JOIN. . .ON. . . При таком положении
косвенные соединения основываются на выражении INNER JOIN ... ON... ON...
(Подробнее
об инструкциях языка SQL см. разд. "Создание запросов SQL" гл. 8.)
Рис. 4.24.
Соединение косвенно связанных записей
Рис. 4.25.
Эквивалентная запросу инструкция SQL
Запросы, соединяющие косвенно связанные записи, часто используются при анализе данных с помощью статистических функций SQL или перекрестных запросов Access.