Как из двух таблиц сделать одну в access?

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

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

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

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

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

В этой статье

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

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

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

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

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

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

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

Читать еще:  Как сделать меню в access?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Читать еще:  Как сделать формулу в access 2013?

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

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

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

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

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

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

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

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

Запросы из нескольких таблиц

О запросах в MS Access 2007.

Запросы, как вы уже знаете, нужны для работы с данными, находящимися в таблицах.
Чтобы создать запрос…
1) …в окне базы данных открываете Запросы
2) …и создаете запрос с помощью конструктора.

Пожалуйста, НЕ пользуйтесь для создания запросов Мастером, потому что он позволяет делать только самые простые запросы, а переделывать их потом в более продвинутые даже сложнее, чем создать запрос в конструкторе «с нуля».

Пожалуйста, скачайте базу данных для выставки собак (dogs.mdb). В ней вы найдете данные, необходимые вам для создания запросов.

Запросы на выборку

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

Итак, вот главные элементы конструктора запросов:
1 – область данных (таблиц);
2 – область условий отбора;
3 – кнопка запуска запроса.

Условия отбора

В запросах на выборку можно задавать условия. Для этого в СООТВЕТСТВУЮЩЕМ СТОЛБЦЕ нужно указать в строке Условие отбора нужное значение.

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

Найдем всех шар-пеев.

Будьте внимательны! Компьютер ищет ТОЧНЫЕ совпадения, поэтому если вы случайно сделали опечатку, поставили лишний пробел или забыли дефис, то запрос может не сработать.

При задании условия отбора можно использовать операторы >, = (больше или равно), (не равно).
Найдем всех молодых (моложе 2 лет) собак.

Обратите внимание! Также как и Excel, Access работает с разными типами данных: строковыми, числовыми, временными, логическими и др. Чтобы показать, к какому типу он отнес данное условие отбора, Access автоматически заключает строки в кавычки («шар-пей»), даты – в решетки (#01.05.2008#), числа оставляет, как есть (15), а логические проверяет, чтобы были либо ИСТИНА, либо ЛОЖЬ.

Читать еще:  Как сделать резервную копию базы данных access?

Составные условия отбора

Если нужно задать несколько условий, то условия для оператора «И» записывайте в одной строчке, а для оператора «ИЛИ» в одном в столбце друг под другом.
Здесь мы находим всех английских сеттеров и сеттеров-гордонов.

А здесь всех щенков (моложе года) шар-пеев.

А кого мы найдем здесь?

а) всех щенков шар-пеев и щенков английских сеттеров;
б) всех щенков шар-пеев и всех английских сеттеров;
в) всех шар-пеев и всех щенков английских сеттеров;

Проверьте! Сформулируйте правило, по которому Access из записей в ячейках формирует составные условия отбора.

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

Всех юниоры (которым больше года, но меньше двух лет).

Оператор LIKE

На выставке организована секция сеттеров. Для участия в ней нам необходимо отобрать всех представителей этой группы. Если мы просто напишем в условиях отбора «сеттер», то запрос не отберет ни одной записи, поскольку у нас нет просто сеттеров, а есть английские, ирландские сеттеры, сеттеры-гордоны, а Access требует полного совпадения значения в ячейке со значением, указанным в условии отбора. Перечислять их всех слишком долго, к тому же можно кого-нибудь забыть.
В этом случае нам пригодится оператор LIKE, который позволяет делать отбор по фрагменту строки. Использование LIKE перед условием отбора, это все равно, что включение режима подстановочных знаков в Word (* – любая последовательность символов; ? – любой символ). Значит, чтобы Access мог отыскать английских, ирландских сеттеров и сеттеров-гордонов, нужно написать в условии отбора LIKE *сеттер*.

Кто и почему будет отобран, если мы напишем в условии отбора LIKE *сеттер ?

Запросы из нескольких таблиц

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

Чтобы добавить в запрос еще одну таблицу, вызовите контекстное меню на области таблиц и в нем пункт Добавить таблицу.

Добавьте таблицы, в которых содержатся необходимые данные (фамилия владельцев и город).
Перебросьте из области таблиц вниз, в область условий отбора, те поля из новых таблиц, которые должны быть отображены в результатах запроса.
Запустите запрос и проверьте, получилось ли у вас, как на рисунке. Проверьте себя: ответ.

Отсев пустых строк

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

Почему это происходит?
Дело в том, что у нас в таблице tbPerson наряду с владельцами собак записаны и судьи (Петровская, Елец, Терещук). Судьи не имеют права привозить своих собак на выставку, поэтому в строках с их фамилиями пустые ячейки с кличками собак.
Есть два способа удалить пустые строки.
1. Поставить условие на значение клички собаки Is not Null, т.е. НЕ ПУСТА.

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

Вопрос вам: какие настройки нужно поменять в диалоговом окне параметров объединения?

Ссылка на основную публикацию
Adblock
detector