Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

Тема Способи об’єднання таблиць у запитах

Самостійна робота № 18

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

Наиболее распространенным является внутреннее объединение. При этом в ре­зультирующий набор попадают те записи из двух связанных таблиц, у которых связанные поля совпадают. Если две таблицы связаны отношением «один-ко-многим», то в результат запроса включаются все записи из главной таблицы (таблицы «один»), для которых имеются соответствующие записи в подчинен­ной таблице (таблице «многие»). Если запись в главной таблице не имеет соот­ветствующих записей в подчиненной таблице, эта запись в результирующее мно­жество не включается. Подобного рода объединение таблиц в запросе Access создает автоматически, когда:

1. соединение «один-ко-многим» было явно задано в окне Схема данных (Rela­tionships);

2. в таблицах имеются поля с одинаковыми именами и согласованными типами, причем одно из полей является ключевым.

Если новая запись в таблице не имеет связанных записей в подчиненной таблице, она не попадает в результат запроса. Таким образом, запрос может быть построен не совсем корректно. (Именно эта ошибка может быть причиной «исчезнове­ния» записей в таблицах во многих случаях.) Чтобы устранить ошибку, Нужно использовать так называемое внешнее объединение.

Внешние объединения бывают левыми или правыми. Запрос, в котором участвуют таблицы с левым внешним объединением (в инструкции SQL оно обозначается LEFT JOIN): выводит все записи таблицы «один» с уникальным значением первичного ключа вне зависимости от того, имеются ли соответствующие им записи в таблице «многие». И наоборот, запрос, в котором участвуют таблицы с правым внешним объединением (в инструкции SQL RIGHT JOIN), выводит все записи таблицы «многие» вне зависимости от того, имеются ли соответствующие им записи в таблице «один».

Теперь мы установим внешнее объединение между таблицами в запросе.

1. Переключитесь в режим Конструктора.

2. Выделите связь между главной и подчиненной таблицами и затем дважды щелкните на ней.

3. Появится диалоговое окно Параметры объединения . Значение переключателя 1 задает обычное внутреннее объединение, значение 2 — левое внешнее объединение, а значение 3 — правое внешнее объе­динение.

4. Задайте левое внешнее объединение, выбрав значение переключателя 2. На­жмите кнопку OK для закрытия диалогового окна. При этом на конце линии соединения появится стрелка в сторону таблицы «многие» (АвторИздание), что указывает на левое внешнее объединение.

5. Поскольку в нашей базе данные таблиц Издания и Авторы связаны косвенно, через таблицу связи АвторИздание, постольку, чтобы правильно был создан запрос, необходимо установить внешнее объединение и между таблицами Ав­торы и АвторИздание. Только теперь нужно, чтобы в запрос были включены все записи из таблицы АвторИздание («многие»-) и только те записи из табли­цы Авторы, которые имеют совпадающие значения в связанных полях. Это ибудет правое внешнее объединение.

6. Щелкните дважды на линии, соединяющей таблицы Авторы и АвторИздание, открывая тем самым диалоговое окно Параметры объединения .

7. Выберите значение переключателя 3 и нажмите кнопку ОК. Стрелочка те­перь будет указывать в сторону таблицы на стороне «один» (Авторы).

8. Выполните запрос и убедитесь, что книга «Русские былины» появилась в ре­зультирующем наборе запроса.

 

Контрольні питання

 

  1. Какие виды объединений таблиц существуют?
  2. Опишите внутреннее объединение.
  3. Когда нужно использовать внешнее объединение? Какими бывают внешние объединения?