Как объединить таблицы в access
Перейти к содержимому

Как объединить таблицы в access

Как объединить таблицы в access

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

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

Примечание: Запросы можно присоединять так же, как и таблицы, а также одновременно присоединяться к ним.

В этой статье

Обзор

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

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

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

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

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

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

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

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

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

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

Типы соединители

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

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

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

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

Внешнее соединить похоже на внутреннее, но добавляет оставшиеся строки из одной из таблиц. Внешнее соединителевое — это направление: левое внешнее — все записи из левой таблицы (первая таблица в составе), а правое внешнее — все записи правой таблицы, вторая — в составной.

Полные внешние соединители: все данные, объединенные, где это целесообразно

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

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

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

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

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

Показать строки, в которых в обеих таблицах есть общее значение

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

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

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

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

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

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

SQL синтаксис внутреннего join

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

FROM таблица1 INNER JOIN таблица2 ON таблица1.поле1 compare table2.поле2

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

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

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

поле1, поле2

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

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

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

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

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

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

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

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

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

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

Изменение внутреннего соединиться на внешнее

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

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

В диалоговом окне «Параметры присоединиться» обратите внимание на варианты, указанные рядом с вариантом 2 и вариантом 3.

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

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

Неоднозначные внешние соединители

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

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

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

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

FROM table1 [ LEFT | RIGHT ] JOIN table2
ON table1.field1 compare table2.field2

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

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

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

поле1, поле2

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

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

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

Показать все строки из обеих таблиц и объединить их там, где есть общее значение

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

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

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

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

Нажмите CTRL+C, чтобы SQL код.

Удалите 12-ю пунктов в конце предложения FROM и нажмите ввод.

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

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

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

В коде, который вы вставляли, измените LEFT JOIN на RIGHT JOIN.

Удалите 1-ю и 12-ю пунктов в конце второго предложения FROM и нажмите ввод.

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

Например, если предложение FROM имеет такое положение:

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

WHERE Products.ID IS NULL

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

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

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

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

Зачем использовать перекрестный переход?

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

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

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

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

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

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

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

Соединяем таблицы на основе неравных значений полей.

При этом не нужно, чтобы они были основаны на эквивалентности полей. Объединить можно с учетом любого оператора сравнения, например больше (>), меньше (<) или не равно (<>). Такие соединить называются неравными.

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

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

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

Удаление join

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

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

Нажмите кнопку DELETE.

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

Как объединить таблицы в access

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

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

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

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

В этой статье

Обзор

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

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

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

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

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

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

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

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

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

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

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

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

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

Внешние соединения: все связанные данные правильно объединены и все оставшиеся записи из одной таблицы

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

Полные внешние соединения: все данные, в сочетании с возможными возможностями

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

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

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

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

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

Показывать строки, в которых есть общее значение в обеих Объединенных таблицах

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Вы создаете внешнее соединение, изменяя существующее внутреннее соединение. Если внутреннее соединение не существует, создайте его, а затем измените на внешнее соединение.

Изменение внутреннего объединения на внешнее соединение

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

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

В диалоговом окне Свойства объединения Обратите внимание на варианты, указанные в разделе Параметры 2 и 3.

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

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

Неоднозначные внешние соединения

Если вы создаете запрос с левым СОЕДИНЕНИЕм и ВНУТРЕННим СОЕДИНЕНИЕм, Access не сможет определить, какую операцию соединения нужно выполнить в первую очередь. Так как результаты различаются в зависимости от того, выполняется ли левое соединение или внутреннее соединение, Access выводит сообщение об ошибке:

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

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

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

FROM Таблица1 [Left | RIGHT] Join Таблица2
для Table1. field1 Compare Table2. поле2

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

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

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

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

Дополнительные сведения о синтаксисе OUTER JOIN можно найти в разделе Выполнение операций соединения LEFT JOIN и RIGHT JOIN.

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

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

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

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

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

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

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

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

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

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

В коде, который вы вставили, измените левое соединение на right.

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

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

Например, если предложение FROM имеет следующее:

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

WHERE Products.ID IS NULL

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

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

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

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

Зачем использовать перекрестное соединение?

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

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

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

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

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

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

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

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

Соединения не должны основываться на эквивалентности Объединенных полей . Соединение может быть основано на любом операторе сравнения, например больше ( _гт_), меньше чем ( _лт_), или не равно ( _лт__гт_). Соединения, не основанные на эквивалентности, называются неравенствными соединениями.

Если вы хотите объединить строки из двух источников данных на основе значений полей, которые не равны, используйте соединение по несовпадению. Как правило, соединения на неодинаковые значения зависят от значений операторов сравнения "больше ( _гт_)", "меньше" ( _лт_), "больше" или "равно" ( _гт_ =) или меньше или равно ( _лт_ =). Неодинаковые соединения, основанные на операторе is Not Equals ( _лт__гт_), могут возвращать практически столько строк, сколько перекрестное соединение, и результаты могут быть трудно интерпретировать.

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

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

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

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

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

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

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

Учебная дисциплина
Информатика и компьютерная техника
Модуль 2. Офисные прикладные программы Microsoft Office 2007

2.4. Microsoft Access 2007

2.4.3. Установка логических связей в БД Access 2007

Логические связи устанавливаются между одноименными полями таблиц базы данных Access 2007. Связь данных в одной таблице с данными в других таблицах осуществляется через уникальные идентификаторы (ключи) или ключевые поля. В нашем случае мы должны установить логические связи между таблицами: Группы студентов, Студенты, Дисциплины и Успеваемость.

Для установления связей используем ключевые поля: КодГруппы, КодСтудентов и КодДисциплины. Например, между первичным ключом (КодГруппы) tables Группы студентов и вторичным ключом (КодГруппы) tables Студенты устанавливаем связь один — ко — многим.

Прежде чем приступить к созданию логических связей надо в Окне редактирования закрыть все tables и перейти на вкладку Работа с базами данных. Затем щелкнуть на пиктограмме Схема данных, в окне редактирования появится активное диалоговое окно "Добавление таблицы" на фоне неактивного окна Схема данных (рис. 1).

В окне Добавление таблиц необходимо выделить имена таблиц и нажать кнопку Добавить, при этом в окне "Схема данных" появятся все tables (рис. 2). После этого необходимо закрыть окно диалога.

Далее необходимо установить связи между табл. в окне Схема данных. Для этого в окне Схема данных необходимо отбуксировать (переместить) поле КодГруппы из таблицы Группы студентов на соответствующее поле tables Студенты, в результате этой операции появится окно "Изменение связей" (рис. 3) .

В появившемся окне диалога "Изменение связей" (рис. 3) необходимо установить флажки: "Обеспечить целостность данных", "каскадное обновление связанных полей" и "каскадное удаление связанных записей", убедиться в том, что установлен тип отношений один-ко-многим и нажать кнопку Создать.

В окне Схема данных появится связь один-ко-многим между таблицами Группы студентов и Студенты. Аналогичным образом надо связать поля КодСтудента в таблицах Студенты и Успеваемость, а затем поля КодДисциплины в таблицах Успеваемость и Дисциплины. В итоге получим Схему данных, представленную на рисунке 4.

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

Затем установить связи между табл. "Студенты" и "Успеваемость", "Дисциплины" и "Успеваемость", так как поля КодСтуденты и КодДисциплины табл. Успеваемость используется в качестве столбца подстановки для заполнения соответствующих полей таблицы Успеваемость.

Copyright

© Обучение в интернет, .
Обратная связь

Aston

Доброго времени суток!
Есть база данных в Access, в ней 10 таблиц с одинаковой структурой: Модель, Описание, Характеристики, Объем
К каждой таблице соответствующий запрос
Небходимо эти таблицы (либо запросы) обеденить в одну. что-то типа сводного запроса.

Благодарю за помощь! :facepalm:

KIA1990
Aston
Aston
Aston
Aston
User1C

Если не получается по простому через Union (хотя если у тебя все поля совпадают, то должно работать), то как вариант!

Aleksey

Автор всеравно не расколется, и не пытайтесь, у него и брат партизан.

Aston

Благодарю :lovecodeby: Для объединения 2-х таблиц реализовать даный алгоритм тоже получилось. Правда объеденить все 10 пока не получается :KillMe:
Либо я где-то туплю. либо UNION ALL обеспечивает тип запроса "Добавление" и он годен только только для 2-х таблиц :what?: Поправте, если я заблуждаюсь

User1C

Попробуй без UNION ALL

SELECT Модель, Описание,Характеристики,Объем
FROM Tabl1;

UNION SELECT Модель, Описание,Характеристики,Объем
FROM Tabl2;

UNION SELECT Модель, Описание,Характеристики,Объем
FROM Tabl. +n;

Должно 100% работать, при условии что все поля совпадают по имени

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

Как объеденить 10 таблиц БД Access в одну?

Доброго времени суток!
Есть база данных в Access, в ней 10 таблиц с одинаковой структурой: Модель, Описание, Характеристики, Объем
К каждой таблице соответствующий запрос
Небходимо эти таблицы (либо запросы) обеденить в одну. что-то типа сводного запроса.

Благодарю за помощь! :facepalm:

KIA1990
  • 26.08.2010
  • #2
  • 26.08.2010
  • #3
  • 26.08.2010
  • #4
Aston
  • 26.08.2010
  • #5
Aston
  • 26.08.2010
  • #6
  • 26.08.2010
  • #7
Aston
  • 26.08.2010
  • #8

Таблицы разные по содержанию но однотипные по структуре.

  • 26.08.2010
  • #9
Aston
  • 26.08.2010
  • #10
User1C
  • 26.08.2010
  • #11

Если не получается по простому через Union (хотя если у тебя все поля совпадают, то должно работать), то как вариант!

Aleksey
  • 27.08.2010
  • #12

Приблизительно минуты три "ковыряния" подтвердили догадку о том, что UNION должен работать. Вот текст запроса для Access, который создает таблицу Tab3 из двух таблиц Tab1 и Tab2:
SELECT * INTO Tab3 FROM (
SELECT * FROM Tab1
UNION ALL
SELECT * FROM Tab2);

  • 27.08.2010
  • #13

Автор всеравно не расколется, и не пытайтесь, у него и брат партизан.

Aston
  • 27.08.2010
  • #14

Благодарю :lovecodeby: Для объединения 2-х таблиц реализовать даный алгоритм тоже получилось. Правда объеденить все 10 пока не получается :KillMe:
Либо я где-то туплю. либо UNION ALL обеспечивает тип запроса "Добавление" и он годен только только для 2-х таблиц :what?: Поправте, если я заблуждаюсь

Если не получается по простому через Union (хотя если у тебя все поля совпадают, то должно работать), то как вариант!

User1C
  • 27.08.2010
  • #15

Попробуй без UNION ALL

SELECT Модель, Описание,Характеристики,Объем
FROM Tabl1;

UNION SELECT Модель, Описание,Характеристики,Объем
FROM Tabl2;

UNION SELECT Модель, Описание,Характеристики,Объем
FROM Tabl. +n;

Должно 100% работать, при условии что все поля совпадают по имени

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *