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

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

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

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

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

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

В этой статье

Общие сведения

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

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

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

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

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

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

Общие сведения

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Элемент

Описание

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

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

поле1, поле2

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

Сравнение

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

Дополнительные сведения о синтаксисе внутреннее соединение приведены в разделе Операция ВНУТРЕННЕЕ соединение.

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

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

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

Внешние объединения являются направленными, они могут быть левыми или правыми. При левом объединении в запрос включаются все строки таблицы из первой таблицы в предложении 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, операций ОБЪЕДИНЕНИЯ СПРАВА.

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

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

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

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

  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. Перекрестное соединение с каждой из строк из другой таблицы, что приводит к называемое созданное или декартово произведение объединяется каждой строки из одной таблицы. Каждый раз, когда выполнить запрос с несколькими таблицами, не входящих явным образом, созданное является результатом. Перекрестные соединения обычно случайно, но бывают случаи, где они могут быть полезны.

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

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

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

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

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

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

1. Поля, обведенные кружками, должны быть объединены.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

-или-

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

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

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

См. также

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

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

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

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

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

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

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

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

×