Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ФОРМАТИРОВАНИЕ СВОДНОЙ ТАБЛИЦЫ.docx
Скачиваний:
8
Добавлен:
12.04.2015
Размер:
188.49 Кб
Скачать

Запрос с соединением 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.