Упражнение 8. Внешнее соединение таблиц
Внешнее соединение– используется для создания запроса, объединяющего все записи из одной таблицы и только те записи из второй, в которых связанные поля совпадают. В этом случае независимо от того, имеются ли соответствующие записи во второй таблице, все записи первой попадают в результирующее множество запроса. Внешние соединения таблиц в запросе могут быть левыми или правыми. Запрос, в котором участвуют таблицы с левым внешним соединением (в языке SQL оно обозначается LEFT JOIN или *=), выводит все записи первой таблицы независимо от того, имеются ли соответствующие им записи во второй таблице. И наоборот, запрос, в котором участвуют таблицы с правым внешним соединением (в языке SQL оно обозначается RIGHT JOIN или =*), выводит все записи второй таблицы независимо от того, имеются ли соответствующие им записи в первой таблице.
1. Откройте в Access 2007 БД Личная картотека.
2. Создайте новый запрос с помощью Конструктора запросов. Для этого перейдите на вкладку Создание и в группе Другие нажмите кнопку Конструктор запросов.
3. На экране появится рабочая среда Конструктора запросов, в котором откроется диалоговое окно Добавление таблицы.
4. На вкладке Таблицы щелкните имя таблицы Группы контактов и нажмите кнопку Добавить.
5. На вкладке Таблицы щелкните имя таблицы Мои контакты и нажмите кнопку Добавить.
6. Нажмите кнопку Закрыть. На экране отобразится пустой бланк нового запроса, в верхней части которого будут показаны структура двух выбранных таблиц и связь между таблицами, установленная по полю Код группы.
7. Выберите поля таблиц, которые нужно включить в запрос. Для этого дважды щелкните названия требуемых полей на макете каждой таблицы. В таблице Группы контактов выберите поле Описание. В таблице Мои контакты выберите поля Имя, Фамилия, Мобильный телефониЭлектронная почта.
8. Все отмеченные поля таблиц будут добавлены в бланк запроса, при этом флажки Вывод на экрандля всех полей установятся автоматически.
9. Установите сортировку по описанию группы контактов в алфавитном порядке. Для этого щелкните ячейку Сортировка в первом столбце бланка запроса (это поле Описание), раскройте список и выберите вариант По возрастанию.
10. Установите сортировку по фамилии в алфавитном порядке. Для этого щелкните ячейку Сортировка в третьем столбце бланка запроса (это поле Фамилия), раскройте список и выберите вариант По возрастанию.
11. Готовый бланк запроса появится на экране (рис. 4.8).
12. Переключитесь в режим SQL. Для этого перейдите на вкладку Конструктор, в группе Результаты щелкните стрелку под кнопкой Режим и выберите команду Режим SQL в раскрывшемся меню.
Рис. 4.8.Готовый бланк запроса.
13. Листинг 5.4. Исходный текст запроса.
SELECT [Группы контактов] .Описание, [Мои контакты] . Имя, [Мои контакты] . Фамилия, [Мои контакты] . [Мобильный телефон] , [Мои контакты] . [Электронная почта]
FROM [Группы контактов] INNER JOIN [Мои контакты] ON [Группы контактов] . [Код группы] = [Мои контакты]. [Код группы]
ORDER BY [Группы контактов] .Описание, [Мои контакты] . Фамилия;
14. В строке FROM замените текст INNER JOIN на LEFT JOIN. В результате должен получиться SQL-текст:
Листинг 5.4. Запрос с левым внешним соединением.
SELECT [Группы контактов] .Описание, [Мои контакты] . Имя, [Мои контакты] . Фамилия, [Мои контакты] . [Мобильный телефон] , [Мои контакты] . [Электронная почта]
FROM [Группы контактов] LEFT JOIN [Мои контакты] ON [Группы контактов] . [Код группы] = [Мои контакты]. [Код группы]
ORDER BY [Группы контактов] . Описание, [Мои контакты] . Фамилия;
15. Нажмите кнопку Сохранить на панели быстрого доступа.
16. В поле Имя запроса введите название нового запроса (Левое внешнее соединение).
17. Нажмите кнопку ОК.
18. Если вы хотите посмотреть результат выполнения нового запроса, щелкните контекстную вкладку Конструктор и нажмите кнопку Выполнить. В результате выполнения запроса на экране отобразится перечень имен и фамилий людей относящихся к каждой из существующих групп контактов.