ТОП 10:

Создание внешнего соединения



 

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

Запрос, в котором участвуют таблицы с левым внешним соединением (left join в SQL), выводит все записи таблицы "один" с уникальным значением первичного ключа в независимости от того, имеются ли соответствующие им записи в таблице "многие". И наоборот, запрос, в котором участвуют таблицы с правым внешним соединением (right join в SQL), выводит все записи таблицы "многие" в независимости от того, имеются ли соответствующие им записи в таблице "один". Обычно, но не обязательно, записи таблицы "многие", которые не подчиняются ни одной записи в таблице "один", являются "висячими" и могут быть связаны отношением "многие-к-одному" с записями другой таблицы.

Задание 2.18.

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

1. Создайте новый запрос и добавьте в него таблицы "Сотрудники" и "Персональные мероприятия".

2. Перетащите поле "КодСотрудника" таблицы "Сотрудники" на поле "КодСотрудника" таблицы "Персональные мероприятия" для создания внутреннего соединения между ними.

3. Выделите и перетащите поля "Фамилия" и "Имя" таблицы "Сотрудники", а также поля "КодСотрудника" и "ДатаПлан" таблицы "Персональные мероприятия" соответственно в первые четыре столбца бланка запроса.
4. Выделите линию, соединяющую поля "КодСотрудника", щелкнув по ней. Увеличение толщины тонкого отрезка линии указывает на то, что линия выделена.
5. При двойном щелчке по любому из двух толстых отрезков линий по краям соединительной линии выводится бланк свойств запроса. В диалоговом окне "Параметры объединения" переключатель "1" задает обычное внутреннее соединение, переключатель "2" — левое внешнее соединение и переключатель "3" — правое внешнее соединение.

6. Задайте левое внешнее соединение, выбрав переключатель "2".
7. Запустите запрос. Три сотрудника не имеют записей в таблице "Персональные мероприятия".


Создание рекурсивного соединения

Рекурсивные соединения связывают поля одной таблицы. При этом требуется добавить в запрос копию таблицы, а затем задать соединение. В качестве примера рассмотрим запрос, в котором выводятся сотрудники, утвердившие мероприятия, за которые они ответственны, что запрещено внутренним распорядком компании "Борей".

 

Задание 2.19.

Создайте рекурсивное соединение в таблице "Персональные мероприятия".

1. Создайте новый запрос и добавьте в него таблицу "Персональные мероприятия".

2. Добавьте в запрос копию таблицы "Персональные мероприятия", повторно нажав кнопку "Добавить". Access присваивает копии имя "Персональные мероприятия_1".

3. Перетащите поле "КодОтветственного" исходной таблицы на поле копии "КодНачальника". Между таблицами возникает соединение.

4. Перетащите поля "КодСотрудника" и "КодОтветственного" исходной таблицы, а также поля "КодНачальника" и "ТипМероприятия" таблицы "Персональные мероприятия_1)" соответственно в первые четыре столбца бланка запроса.

5. При использовании рекурсивных соединений требуется задать вывод только уникальных значений. Для этого присвойте в бланке свойств запроса значение Да свойству "Уникальные значения".

6. Нажмите кнопку "Запуск" для вывода записей, в которых сотрудник, ответственный и утвердивший план мероприятий, является одним и тем же лицом.

 







Последнее изменение этой страницы: 2017-02-22; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.223.3.101 (0.004 с.)