Объединение таблиц и запросов

Объединение таблиц и запросов

Примечание: Мы стараемся как можно оперативнее обеспечивать вас актуальными справочными материалами на вашем языке. Эта страница переведена автоматически, поэтому ее текст может содержать неточности и грамматические ошибки. Для нас важно, чтобы эта статья была вам полезна. Просим вас уделить пару секунд и сообщить, помогла ли она вам, с помощью кнопок внизу страницы. Для удобства также приводим ссылку на оригинал (на английском языке).

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

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

Примечание: Вы можете присоединиться запросы таким же образом объединение таблиц и можно также присоединиться к оба.

В этой статье

Обзор

Типы соединений

Отображает строки, где с общими значениями в обеих объединенных таблицах

Отображает все строки одной таблицы и соответствующие строки другой таблицы

Отображает все строки из обеих таблиц и присоединение к, где с общими значениями

Перекрестное соединение

Объединение таблиц на основании неравности значений полей

Удаление соединения

Обзор

База данных находится коллекция таблиц данных, несете логических связей друг с другом. Использование связей для соединения таблиц по полям, которые они содержат общие. Таблица может быть частью любое число отношений, но каждую связь всегда имеет ровно две таблицы. В запросе связи представленного соединения.

При добавлении таблиц в запрос Access создает соединения, основанных на связи, которые были определены между таблицами. Можно вручную создать соединения в запросах, даже если они не представляют связи, которые уже были определены. При использовании других запросов (вместо или в дополнение к таблицам) в качестве источников данных для запроса, можно создать соединений между запросов источника, а также между этих запросов и все таблицы, которые можно использовать в качестве источников данных.

Соединения ведут себя аналогично об условиях запроса в том, что они устанавливают правила, которые данные должны соответствовать должны быть включены в операции запроса. В отличие от условий соединения также указать, что каждая пара строк, которые удовлетворяют условий соединения будет добавляться в наборе записей для формы одну строку.

Существует четыре основных типа соединения: внутренние соединения, внешние соединения, перекрестные соединения и внешние соединения. В этой статье рассматриваются каждого типа соединения, которые можно использовать, зачем использовать каждый тип и способов создания соединений.

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

Окно "Параметры объединения".

Это линия между таблицами представляет соединение. Дважды щелкните соединение, чтобы открыть диалоговое окно Параметры объединения (отображаемые) и Просмотр или изменение соединения.

Соединения могут быть направленными. В этой области диалогового окна показана принадлежность таблиц в соединении и какие поля использованы для объединения таблиц.

В этой области определяется тип соединения: вариант 1 означает внутреннее соединение, 2 — левое внешнее соединение и 3 — правое внешнее соединение.

Из обеих таблиц могут использоваться поля и отображаться данные, которые относятся к поставленной задаче. Во внутреннем соединении никакие другие данные не включаются. Во внешнем соединении несвязанные данные из одной таблицы также включаются в результаты запроса.

К началу страницы

Типы соединений

Существует четыре основных типа соединений: внутренние, внешние, перекрестные соединения и соединения по несовпадению. Перекрестные соединения и соединения по несовпадению самые сложные и используются редко, но о них необходимо знать для того, чтобы полностью понимать принцип работы соединений.

Внутренние соединения: объединяются только связанные данные из обеих таблиц

При внутреннем соединении Access включает из таблицы данные только в том случае, если соответствующие данные содержатся в связанной таблице, и наоборот. Такие соединения используются чаще всего. Если не выбрать тип нового соединения, Access по умолчанию создает внутреннее соединение. Внутренние соединения позволяют объединить данные из двух источников на основании общих значений. Таким образом, данные отображаются только тогда, когда доступна полная картина.

Внешние соединения: объединяются все связанные данные, а также все оставшиеся записи из одной таблицы

Внешнее соединение подобно внутреннему, но оно добавляет все остальные строки из одной из таблиц. Внешние соединения являются направленными: левое внешнее соединение включает все записи из левой таблицы, первой в соединении, а правое внешнее соединение включает все записи из правой таблицы, второй в соединении.

Полное внешнее соединение: объединяются все доступные данные

В некоторых системах внешнее соединение может включать все строки из обеих таблиц с объединением соответствующих строк. Это называется полное внешнее соединение, которое Access непосредственно не поддерживает. Впрочем, чтобы достичь такого же эффекта, можно использовать перекрестные соединения и условия.

Перекрестное соединение: все данные объединяются всеми возможными способами

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

Соединение по несоответствию: подобно обычному соединению, но для объединения строк использует другие сравнения

Такие соединения используют оператор, отличный от знака равенства (=), для сравнения значений и определения, нужно ли объединять данные, и каким образом. Соединения по несоответствию не поддерживаются программой Access непосредственно, но для достижения такого эффекта можно использовать перекрестное соединение и условия.

Отображает строки, где с общими значениями в обеих объединенных таблицах

Если необходимо отобразить только те строки, которые содержат совпадающие значения в объединенном поле, необходимо использовать внутреннее соединение. Access создает внутреннее соединение автоматически.

Внутренние соединения — наиболее распространенный тип объединения. Определить запрос, строк из одного из объединенных таблицах соответствуют строкам в другой таблице, на основе данных в объединенных полях. При выполнении запроса с внутренним соединением только те строки, где с общими значениями в обеих объединенных таблицах будут включены в операции запроса.

Как следует использовать внутреннее соединение?

В большинстве случаев для использования внутренних соединений не нужно предпринимать каких-либо действий. Если таблицы, добавленные в запрос, уже связаны, Access автоматически создает внутреннее соединение между каждой парой объединенных таблиц при их добавлении. Если накладываются условия целостность данных, то над линией соединения автоматически отображается цифра "1", означающая, что таблица находится на стороне "один" в отношение "один-ко-многим", и знак бесконечности () для указания таблиц, находящихся на стороне "многие".

Даже если вы еще не создали связи, Access автоматически создает внутренние соединения, если вы добавляете двух таблиц в запрос и этих таблиц содержат поле с тем же или совместимый тип данных и один из полей объединения является первичный ключ. Символы «один» и «многие» не отображаются в этом случае, так как не целостности данных.

Если добавить в запрос запросы, а не создали связи между этих запросов, Access не автоматически создать внутренние соединения между этих запросов или таблиц и запросов. Как правило следует создавать их самостоятельно. Создание внутреннего соединения, перетаскивая поля из одного источника данных в поле другой источник данных. Access добавит линию между двумя полями, чтобы показать, что они соединены.

SQL-синтаксис внутреннего соединения

Внутренние соединения в SQL описываются предложением FROM, как показано ниже:

FROM Таблица1 INNER JOIN Таблица2 на table1.поле1 сравнение Таблица2.поле2

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

Часть

Описание

таблица1, таблица2

Имена таблиц, содержащих объединяемые записи.

поле1, поле2

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

тип_сравнения

Любой оператор сравнения: (=, <, >, <=, >= или <>)

Дополнительные сведения о синтаксисе внутренних объединений см. в разделе Операция INNER JOIN.

К началу страницы

Отображает все строки одной таблицы и соответствующие строки другой таблицы

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

Внешние соединения являются направленными, они могут быть левыми или правыми. При левом соединении в запрос включаются все строки из первой таблицы в предложении FROM инструкции SQL, и только те строки из другой таблицы, в которых значения связанных полей совпадают. При правом соединении в запрос включаются все строки из второй таблицы в предложении FROM инструкции SQL, и только те строки из другой таблицы, в которых значения связанных полей совпадают.

Примечание: Можно легко определить таблицу, которая является левая таблица или правая таблица в заданной соединения, дважды щелкнув соединение и нажмите Найти в диалоговом окне Параметры объединения. Можно также переключиться в режим SQL и затем просмотрите предложение FROM.

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

Как следует использовать внешнее соединение?

Внешнее соединение создается путем изменения внутреннего соединения. Если нет ни одного существующего внутреннего соединения, необходимо его создать и преобразовать во внешнее.

Замена внутреннего соединения на внешнее

  1. В конструкторе запроса дважды щелкните соединение, которое следует изменить.

    Откроется диалоговое окно Параметры соединения.

  2. В диалоговом окне Параметры объединения обратите внимание на варианты, перечисленные рядом с параметрами 2 и 3.

  3. Выберите нужный вариант и нажмите кнопку ОК.

  4. В Microsoft Access отобразится соединение и стрелка от источника данных, все строки которого включаются в соединение, к источнику данных, из которого выбираются только строки, удовлетворяющие условию соединения.

Неопределенные внешние соединения

Создать запрос, содержащий LEFT JOIN и внутреннего СОЕДИНЕНИЯ, Access могут не всегда можно определить, какой присоединение операции выполнять первым. Поскольку результаты могут отличаться в зависимости от левого соединения или внутреннее соединение выполняется ли сначала, Access отображает сообщение об ошибке:

Чтобы исправить эту ошибку, необходимо изменить запрос, чтобы было ясно, какое соединение выполнять первым.

SQL-синтаксис внешнего соединения

Внешние соединения в SQL описываются предложением FROM, как показано ниже:

ИЗ table1 [влево | ПРАВЫЙ] JOIN Таблица2
на Таблица1.поле1 сравнение Таблица2.поле2

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

Часть

Описание

таблица1, таблица2

Имена таблиц, содержащих объединяемые записи.

поле1, поле2

Имена связываемых полей. Поля должны относиться к одному тип данных и содержать данные одного вида. Однако имена этих полей могут быть разными.

тип_сравнения

Любой оператор сравнения: (=, <, >, <=, >= или <>)

Дополнительные сведения о синтаксисе внешних соединений см. в разделе Операции LEFT JOIN, RIGHT JOIN.

К началу страницы

Отображает все строки из обеих таблиц и присоединение к, где с общими значениями

Если вы хотите показать все строки из двух таблиц и объединить их на основе общих значений, используйте полного внешнего объединения. Доступ явным образом не поддерживает полные внешние соединения, но тот же эффект можно добиться с помощью запроса на объединение. Описанные ниже способы сделать это, но хотите получить дополнительные сведения о запросах на объединение, доступны в разделе См.

Использование запроса на объединение для полного внешнего объединения:

  1. Создайте запрос с левым внешним объединением в поле, которое нужно использовать для полного внешнего объединения.

  2. На вкладке Главная в группе Представления нажмите кнопку Представление и выберите пункт Режим SQL.

  3. Нажмите клавиши CTRL + C, чтобы скопировать код SQL.

  4. Удалите точку с запятой в конце предложения FROM и нажмите клавишу ВВОД.

  5. Введите слово UNION и нажмите клавишу ВВОД.

    Примечание: Не используйте ключевое слово ALL, если запрос на объединение используется для полного внешнего объединения.

  6. Нажмите клавиши CTRL + V, чтобы вставить код SQL, скопированный в шаге 3.

  7. Во вставленном коде замените оператор LEFT JOIN на RIGHT JOIN.

  8. Удалите точку с запятой в конце второго предложения FROM и нажмите клавишу ВВОД.

  9. Добавьте предложение WHERE, указывающее, что в первой таблице, перечисленной в предложении FROM (таблица слева), значением поля объединения является NULL.

    Например, если предложение FROM выглядит следующим образом:

    FROM Products RIGHT JOIN [Order Details] 
    ON Products.ID = [Order Details].[Product ID]

    Добавьте следующее предложение WHERE:

    WHERE Products.ID IS NULL

  10. Введите точку с запятой (;) в конце предложения WHERE, чтобы указать конец запроса на объединение.

  11. На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить.

Перекрестное соединение

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

Когда следует использовать перекрестное соединение?

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

Как следует использовать перекрестное соединение?

Перекрестное соединение создается в любое время включить в запрос таблиц или запросов и не создавать хотя бы один явное соединение для каждой таблицы или запроса. Access объединяет все строки из каждого таблицу или запрос, явно не входит в любой другой таблицы или запроса для каждой строки в результатах поиска. Возможна ситуация скидку из предыдущего абзаца. Предположим, у вас есть 91 клиентов, и вы хотите проанализировать пять возможных скидку процентов. Ваш перекрестное соединение приводит к появлению 455 строк (произведение 91 и 5).

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

Случайно созданное перекрестное объединение в режиме конструктора запроса
Случайно перекрестная присоединиться в режиме конструктора запроса.

1. кружке поля должен быть присоединен друг с другом.

Случайно созданное полное объединение
Созданное возвращенных случайно перекрестное соединение, отображаемые выше.

1. Примечание большое количество записей.

Результат исправленного запроса
После создания корректное соединение результаты.

1. Обратите внимание, что число записей намного меньше.

К началу страницы

Объединение таблиц на основании неравности значений полей

Соединения не всегда базируются на эквивалентности связываемых полей. Они могут основываться на любом операторе сравнения, например "больше" (>), "меньше" (<) или "не равно" (<>). Соединения, базирующиеся на неравенстве, называются соединениями по несовпадению.

Если требуется скомбинировать строки из двух источников данных на основе значений полей, которые не равны, используется соединение по несовпадению. Обычно такие соединения базируются на операторах сравнения "больше" (>), "меньше" (<), "больше или равно" (>=) или "меньше или равно" (<=). Соединения по несовпадению, базирующиеся на операторе "не равно" (<>), могут вернуть почти столько же строк, как перекрестные соединения, и их результаты будет трудно интерпретировать.

Как следует использовать соединение по несовпадению?

Соединение по несоответствию не поддерживаются в режиме конструктора. Если вы хотите использовать их, сделайте это с помощью режим SQL. Тем не менее, можно создать объединение в режиме конструктора, переключитесь в режим SQL, найти равно оператор сравнения (=), а затем измените ее, чтобы оператор вы хотите использовать. После этого только запрос можно открыть в режиме конструктора снова Если вы первое изменение обратно оператор сравнения равно (=) в режиме SQL.

Удаление соединения

Если Access автоматически создает ненужное соединение или соединение было создано по ошибке (например, соединение двух полей, которые содержат разные типы данных), его можно удалить.

  1. В бланке запроса щелкните соединение, которое следует удалить.

  2. Нажмите клавишу DELETE.

ИЛИ

  • В бланке запроса щелкните соединение, которое следует удалить, правой кнопкой мыши, и выберите в контекстном меню пункт Удалить.

К началу страницы

См. также

Добавление записей в таблицу с помощью запроса на добавление

Объединение результатов нескольких запросов на выборку с помощью запроса на объединение

Создание запроса на основе нескольких таблиц

Создание, изменение или удаление связи

Совершенствование навыков работы с Office
Перейти к обучению
Первоочередный доступ к новым возможностям
Присоединиться к программе предварительной оценки Office

Были ли сведения полезными?

Спасибо за ваш отзыв!

Благодарим за отзыв! Возможно, будет полезно связать вас с одним из наших специалистов службы поддержки Office.

×