Способы объединения таблиц в запросах
Когда в запрос включатся несколько таблиц, для получения нужных результатов используются объединения. Объединение помогает извлечь из каждой включенной в запрос таблицы только нужные записи, на основании сведений о том, как эти таблицы связаны с другими таблицами в запросе.
Существует следующие основные типы объединений: внутренние объединения и внешние.
Внутренние объединения — наиболее часто встречающийся тип объединений. Они представляют собой запросы, в которых строки одной из объединяемых таблиц соответствуют строкам другой таблицы по значениям в связанных полях. При выполнении запроса с внутренним объединением в операцию включаются только строки, имеющие одинаковые значения в обеих связанных таблицах.
Когда следует использовать внутреннее объединение?
Внутреннее объединение используется в том случае, когда запрос должен возвращать только те строки обеих таблиц объединения, значения связанных полей которых совпадают.
Как следует использовать внутреннее объединение?
В большинстве случаев для использования внутреннего объединения не нужно предпринимать каких-либо действий. Если ранее в окне схемы данных были созданы связи между таблицами, то при добавлении связанных таблиц в режиме конструктора запроса линии объединения создаются автоматически.
Внешние объединения представляют собой запросы, в которые включаются все строки одной таблицы, а также строки другой таблицы, значения которых в первой и второй таблице совпадают, несмотря на то, что некоторые из строк с обеих сторон полностью совпадают.
Внешние объединения являются направленными, они могут быть левыми или правыми. Можно легко понять, какая таблица в данном объединении является левой или правой, дважды щелкнув линию связи и посмотрев в диалоговое окно Параметры объединения.
Поскольку некоторые строки с одной стороны внешнего объединения не будут иметь в другой таблице соответствующих им строк, некоторые поля, принадлежащие другой таблице и возвращаемые в результатах запроса, будут иметь пустые значения.
Когда следует использовать внешнее объединение?
Используйте внешнее объединение, когда возникнет необходимость, чтобы в результаты объединения были включены все строки одной из таблиц и только те строки другой таблицы, значения связанных полей в которых соответствуют значениям связанных полей в первой таблице.
Как следует использовать внешнее объединение?
Внешние объединения создаются путем изменения внутренних объединений.
Пусть в таблице Тематика присутствует тематика, по которой нет книг в таблице Книги. Рассмотрим различные варианты выбора книг по тематикам:
1) с помощью Конструктора создайте запрос на основе таблиц Книги и Тематика;
2) в режиме Конструктора запроса дважды щелкните объединение между таблицами, которое следует изменить. На экране появится диалоговое окно Параметры объединения. В этом окне обратите внимание на варианты: параметр 1 соответствует внутреннему объединению, параметр 2 – левое внешнее объединение, параметр 3 – правое внешнее объединение. Установите объединение всех записей из таблицы Тематика и только тех записей из таблицы Книги, в которых связанные поля совпадают;
3) В Microsoft Access отобразится объединение и стрелка, соединяющая источник данных, все строки которого включаются в объединение, с источником данных, из которого выбираются только строки, удовлетворяющие условию объединения;
4) нажмите кнопку Запуск на панели инструментов для просмотра результатов запроса. Вы получите таблицу, которая содержит список всех тематик книг, для каждой тематики указаны книги, относящиеся к ней, при этом одна их тематик будет иметь пустое значение;
5) установите для этой связи внутреннее объединение, просмотрите результат и сравните его с результатом внешнего объединения.
Индивидуальное задание
- Создать запрос:
a. выводящий информацию о книгах, взятых в определенный день;
b. позволяющий отобрать всех читателей, записавшихся в библиотеку в октябре текущего года;
c. подсчитывающий количество обращений читателей в библиотеку (предусмотреть ситуацию, когда читатель записался в библиотеку, но не брал книг, в этом случае запрос должен выдавать для такого читателя 0);
d. выводящий информацию о книгах из всех тематик, содержащих корень «инфо» (например, «Информатика», «Информационные технологии в образовании»);
e. выводящий фамилии задолжников вместе с названиями книг, которые они не вернули.