|
|
Категории: АстрономияБиология География Другие языки Интернет Информатика История Культура Литература Логика Математика Медицина Механика Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Транспорт Физика Философия Финансы Химия Экология Экономика Электроника |
Тема Способи об’єднання таблиць у запитахСамостійна робота № 18 Наиболее часто запросы на выборку используются для того, чтобы объединить в одной таблице на экране данные, которые реально размещаются в разных таблицах базы данных. Источниками данных в таких запросах являются связанные таблицы. Когда запрос создается на базе нескольких таблиц, говорят, что эти таблицы объединяютсяв запросе. Причем можно использовать несколько видов объединений. Наиболее распространенным является внутреннее объединение. При этом в результирующий набор попадают те записи из двух связанных таблиц, у которых связанные поля совпадают. Если две таблицы связаны отношением «один-ко-многим», то в результат запроса включаются все записи из главной таблицы (таблицы «один»), для которых имеются соответствующие записи в подчиненной таблице (таблице «многие»). Если запись в главной таблице не имеет соответствующих записей в подчиненной таблице, эта запись в результирующее множество не включается. Подобного рода объединение таблиц в запросе Access создает автоматически, когда: 1. соединение «один-ко-многим» было явно задано в окне Схема данных (Relationships); 2. в таблицах имеются поля с одинаковыми именами и согласованными типами, причем одно из полей является ключевым. Если новая запись в таблице не имеет связанных записей в подчиненной таблице, она не попадает в результат запроса. Таким образом, запрос может быть построен не совсем корректно. (Именно эта ошибка может быть причиной «исчезновения» записей в таблицах во многих случаях.) Чтобы устранить ошибку, Нужно использовать так называемое внешнее объединение. Внешние объединения бывают левыми или правыми. Запрос, в котором участвуют таблицы с левым внешним объединением (в инструкции SQL оно обозначается LEFT JOIN): выводит все записи таблицы «один» с уникальным значением первичного ключа вне зависимости от того, имеются ли соответствующие им записи в таблице «многие». И наоборот, запрос, в котором участвуют таблицы с правым внешним объединением (в инструкции SQL RIGHT JOIN), выводит все записи таблицы «многие» вне зависимости от того, имеются ли соответствующие им записи в таблице «один». Теперь мы установим внешнее объединение между таблицами в запросе. 1. Переключитесь в режим Конструктора. 2. Выделите связь между главной и подчиненной таблицами и затем дважды щелкните на ней. 3. Появится диалоговое окно Параметры объединения . Значение переключателя 1 задает обычное внутреннее объединение, значение 2 — левое внешнее объединение, а значение 3 — правое внешнее объединение. 4. Задайте левое внешнее объединение, выбрав значение переключателя 2. Нажмите кнопку OK для закрытия диалогового окна. При этом на конце линии соединения появится стрелка в сторону таблицы «многие» (АвторИздание), что указывает на левое внешнее объединение. 5. Поскольку в нашей базе данные таблиц Издания и Авторы связаны косвенно, через таблицу связи АвторИздание, постольку, чтобы правильно был создан запрос, необходимо установить внешнее объединение и между таблицами Авторы и АвторИздание. Только теперь нужно, чтобы в запрос были включены все записи из таблицы АвторИздание («многие»-) и только те записи из таблицы Авторы, которые имеют совпадающие значения в связанных полях. Это ибудет правое внешнее объединение. 6. Щелкните дважды на линии, соединяющей таблицы Авторы и АвторИздание, открывая тем самым диалоговое окно Параметры объединения . 7. Выберите значение переключателя 3 и нажмите кнопку ОК. Стрелочка теперь будет указывать в сторону таблицы на стороне «один» (Авторы). 8. Выполните запрос и убедитесь, что книга «Русские былины» появилась в результирующем наборе запроса.
Контрольні питання
|