Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по информатике.doc
Скачиваний:
130
Добавлен:
26.11.2018
Размер:
3.8 Mб
Скачать

Внешние соединения

До сих пор мы работали с внутренними связями: в выборку включались только те записи из главной таблицы и связанные с ними записи из подчиненных таблиц, в связующих полях которых значения совпадали. Такие запросы устанавливают между таблицами исключающую связь и называются внутренним соединением.

Кроме такого вида соединений существуют запросы, которые устанавливают включающую связь, а соединения между таблицами называются внешними.

При использовании внешних соединений MS Access включает все записи из таблицы, образующей одну сторону отношений, но только совпадающие таблицы, образующие вторую сторону отношений.

Например, нам нужно получить информацию по всем клиентам, не имеющим заказы. Для этого необходимо обеспечить вывод всех клиентов из таблицы Клиенты и соответственно полей Заказано из таблицы Заказы, в том числе и для тех, у кого в данном поле ничего нет, т.к. нет записей в таблице Заказы. Потом можно задать условие "is Null"в поле Заказано, определив тем самым, что в запросе нужно отобрать только клиентов, не сделавших заказы.

При наличии внутреннего соединения данную операцию выполнить невозможно. Поэтому необходимо выполнить следующую последовательность действий:

  • вызвать бланк Запроса и добавить таблицы Заказы и Клиенты;

  • изменить внутреннюю связь на внешнюю, для чего дважды щелкнуть мышью по линии, отражающей связь между двумя списками. При этом появится окно Параметры объединения, содержащие три опции:

  • объединение только тех записей, в которых связанные поля обеих таблиц совпадают, данный режим устанавливается по умолчанию;

  • объединение всех записей из "Клиенты" и только тех записей из "Заказы", в которых связанные поля совпадают;

  • объединение всех записей из "Заказы" и только тех записей из "Клиенты", в которых связанные поля совпадают.

Если выбран второй режим, то Линия связи между таблицами изменит свой вид:

Клиенты

1

Заказы

Код клиента

Код клиента

Стрелка указывает на таблицу, из которой будут выбраны только совпадающие поля.

Заказы Клиенты

Поля

Код клиента

Фамилия

Заказано

Табл.

Клиенты

Клиенты

Заказы

Усл. отб.

Если сделать данный запрос без условия «is Null» в поле Заказано, то он будет иметь следующий вид:

Код клиента

Фамилия

Заказано

126

127

128

129

Иванов

Петров

Сидоров

Печкин

40

60

80

При вводе условия «is Null» из запроса исключаются все строки с ненулевыми полями Заказано (его можно не выводить на экран).

Важно отметить, что пока связь была внутренней, не было разницы, поместить ли в запрос Код клиента из таблицы Клиенты или из таблицы Заказы, т.к. они бы совпадали.

При установлении внешней связи, вытащив поля Код клиента из таблицы Клиенты, вы получите полный список клиентов с их кодами, а, вытащив его из таблицы Заказы, получим следующий вид:

Код клиента

Фамилия

Заказано

126

127

128

Иванов

Петров

Сидоров

Печкин

40

60

80

Такую же связь можно установить между таблицами Предприятие и Заказы. При этом можно поставить условие: показать предприятия, сотрудники которых не сделали заказов.