- •Язык запросов sql
- •Общие сведения
- •Insert - запрос на добавление;
- •Инструкция select
- •Синтаксис select
- •Расширения инструкции select в access
- •Порядок выполнения выборки
- •Управление списком выбора
- •Указание источника данных
- •Применение реляционных операторов
- •Применение булевых операторов
- •Обработка неопределенных значений
- •Сортировка данных
- •Вычисление агрегатных функций
- •Группировка данных
- •Ограничение для групп данных
- •Выборка из нескольких таблиц
- •Соединение отношений
- •Выборка из нескольких таблиц
- •Соединение отношений
- •Запрос с соединением, использующий from и where
- •Запрос с соединением join
- •Запрос с соединением, использующий from и where
- •Запрос с соединением join
- •Операции с таблицами
- •Изменение структуры таблицы
- •Удаление таблицы
- •Действия со строками
- •Вставка строк в таблицу
- •Изменение данных в таблице
- •Удаление данных из таблицы
- •Инструкция transform
- •In ("Физика", "Математика");
- •Глава 5 Работа с формами
Запрос с соединением join
Чтобы написать в Access SQL-запрос, объединяющий несколько связанных таблиц, можно воспользоваться следующим синтаксисом оператора SELECT:
SELECT selectionjist
FROM tablel
{INNER I LEFT | RIGHT} JOIN table2
ON (tablel.columnl_name = table2.column2_name)];
Здесь имеется основное ключевое слово JOIN (соединение) и вспомогательные ключевые слова, задающие способ объединения таблиц: INNER (внутреннее), LEFT (левое внешнее) или RIGHT (правое внешнее). Таким образом, возможны три варианта объединения связанных таблиц в Access: INNER JOIN, LEFT JOIN и RIGHT JOIN (при описании синтаксиса перечень возможных вариантов заключается в фигурные скобки).
При выполнении операции INNER JOIN из обеих объединяемых таблиц выбираются все строки, которые удовлетворяют заданному условию объединения. Обычно в качестве такого условия задается равенство значений ключевых полей (первичного ключа - для одной таблицы и внешнего ключа - для второй),
Результатом операции LEFT JOIN будут все строки из первой таблицы, объединенные только с теми строками из второй таблицы, которые соответствуют заданному условию. Если для какой- то записи первой таблицы нет соответствующей записи во второй таблице, такая запись будет объединена с записью, содержащей значения NULL.
Операция RIGHT JOIN, по аналогии с LEFT JOIN, возвращает выборку всех строк второй таблицы и только тех строк первой таблицы, которые соответствуют указанному условию. Если такие строки отсутствуют, они замещаются записями со значениями NULL.
Заметим, что в качестве условия объединения можно указывать как равенство, так и неравенство значений. При создании запроса Access в режиме конструктора можно задать только условие равенства, а условие неравенства задается только в режиме SQL.
Проиллюстрируем применение операции JOIN. Например, выведем список всех студентов с указанием групп, в которых они
венстве значений, расположенных в связанных столбцах соединяемых таблиц, и записывается в предложении WHERE.
Для приведенных выше таблиц условием совмещения двух отношений может быть совпадение значений в полях А и С. Запрос на соединение таблиц ТаЫе_1 и ТаЫе_2 по равенству полей А и С будет иметь такой вид:
SELECT *
FROM ТаЫе_1, ТаЫе_2 WHERE A = С;
В этом случае результатом выполнения запроса будет следующее отношение: ‘
А |
В |
С |
D |
1 |
3 |
1 |
6 |
Можно отметить, что в соединении приняли участие только те строки обеих таблиц, у которых в указанных полях находятся равные значения. При соединении могут применяться любые условия, хотя равенство значений полей используется чаще всего.
В подавляющем большинстве случаев связь между двумя таблицами строится на взаимоотношении первичных и внешних ключей. Первичный ключ (Primary Key) таблицы, как отмечалось ранее, используется для задания уникальности каждой ее строки. Та таблица, столбцы которой в таком взаимоотношении являются первичным ключом, называется родительской, а та, на которую столбец ссылается, — дочерней, или потомком. Общий столбец в дочерней таблице именуется внешним ключом (Foreign Key).
Рассмотрим несколько правил, которых необходимо придерживаться при выполнении соединения двух отношений:
-
обе таблицы должны быть указаны в списке предложения FROM;
-
данные в столбцах соединяемых таблиц, по которым выполняется связь, должны быть логически связанными;
-
желательно, чтобы связанные столбцы таблиц имели одинаковые имена;
-
если связанные столбцы содержат неопределенные значения, то строки, содержащие их, в соединение включаться не будут.
Перечислим также дополнительные рекомендации, которые помогут увеличить производительность системы при выполнении соединения:
-
при обработке таблиц с большим объемом информ^ тельно, чтобы связанные столбцы были индексированы;
-
для повышения производительности системы желательно, чтобы связанные столбцы имели одинаковый тип данных. При небольших размерах БД может быть достаточно того, чтобы типы данных связанных столбцов были между собой совместимыми, что позволит системе самостоятельно преобразовывать один тип данных в другой.
Можно выделить два типа синтаксиса, который применяется для описания операции соединения отношений:
-
с использованием предложений FROM и WHERE;
-
при помощи ключевого слова JOIN.