пятница, 11 апреля 2008 г.

Операция INNER JOIN

Применимо к: Microsoft Office Access 2007

Объединяет записи из двух таблиц, если в связующих полях этих таблиц содержатся одинаковые значения.

Синтаксис

FROM таблица1 INNER JOIN таблица2 ON таблица1.поле1 оператор_сравнения таблица2.поле2

Операция INNER JOIN состоит из следующих элементов:

ЭлементОписание
таблица1, таблица2Имена таблиц, содержащих объединяемые записи
поле1, поле2Имена связываемых полей. Поля, не являющиеся числовыми, должны относиться к одному типу данных (Тип данных. Характеристика поля, определяющая тип данных, который может содержать это поле. Существуют следующие типы данных: Boolean, Integer, Long, Currency, Single, Double, Date, String и Variant (по умолчанию).) и содержать данные одного вида. Однако имена этих полей могут быть разными
оператор_сравненияЛюбой оператор сравнения: (=, <, >, <=, >= или <>)

Замечания

Операцию INNER JOIN можно использовать в любом предложении FROM. Это самый распространенный тип объединения. С его помощью осуществляется объединение записей из двух таблиц по связующему полю, если оно содержит одинаковые значения в обеих таблицах.

В следующем примере показано, как можно объединить таблицы «Категории» и «Товары» по полю «ИДКатегории».

SELECT ИмяКатегории, Наименование FROM Категории INNER JOIN Товары ON Категории.ИДКатегории = Товары.ИДКатегории;

В предыдущем примере «ИДКатегории» является связующим полем, но оно не включено в результат запроса, поскольку оно не указано в инструкции SELECT. Чтобы включить связующее поле в результат запроса, укажите имя поля в инструкции SELECT: в данном случае это Категории.ИДКатегории.

В инструкции JOIN можно также связать несколько предложений ON, используя следующий синтаксис:

SELECT поля
FROM таблица1 INNER JOIN таблица2
ON таблица1.поле1 оператор_сравнения таблица2.поле1 AND
ON таблица1.поле2 оператор_сравнения таблица2.поле2) OR
ON таблица1.поле3 оператор_сравнения таблица2.поле3)]

Ниже приведен пример синтаксиса, с помощью которого можно составлять вложенные инструкции JOIN:

SELECT поля
FROM таблица1 INNER JOIN
(таблица2 INNER JOIN [( ]таблица3
[INNER JOIN [( ]таблицаX [INNER JOIN ...)]
ON таблица3.поле3 оператор_сравнения таблицаX.полеX)]
ON таблица2.поле2 оператор_сравнения таблица3.поле3)
ON таблица1.поле1 оператор_сравнения таблица2.поле2

Операции LEFT JOIN и RIGHT JOIN могут быть вложены в операцию INNER JOIN, но операция INNER JOIN не может быть вложена в операцию LEFT JOIN или RIGHT JOIN.