Сравнение двух таблиц с целью выявления только совпадающих данных

Сравнение двух таблиц с целью выявления только совпадающих данных

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

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

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

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

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

В этой статье

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

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

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

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

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

Подготовка примера данных

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

Сделать это в Microsoft Office Access 2007 можно несколькими способами. Вы можете ввести данные вручную, скопировать каждую таблицу в редактор электронных таблиц (такой как Microsoft Office Excel 2007) и импортировать листы в Office Access 2007 или же вставить данные в текстовый редактор, например Блокнот, и импортировать их из созданных текстовых файлов.

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

Специализации

Код учащегося

Год

Специализация

123456789

2005

МАТЕМ

223334444

2005

АНГЛ

987654321

2005

МАТЕМ

135791357

2005

ИСТ

147025836

2005

БИОЛ

707070707

2005

МАТЕМ

123456789

2006

МАТЕМ

223334444

2006

АНГЛ

987654321

2006

ПСИХОЛ

135791357

2006

ИСТ ИССК

147025836

2006

БИОЛ

707070707

2006

МАТЕМ

Учащиеся

Код учащегося

Год

Семестр

Учебный план

Номер предмета

Оценка

123456789

2005

3

МАТЕМ

221

5

123456789

2005

3

АНГЛ

101

4

123456789

2006

1

МАТЕМ

242

3

123456789

2006

1

МАТЕМ

224

3

223334444

2005

3

АНГЛ

112

5

223334444

2005

3

МАТЕМ

120

3

223334444

2006

1

ПОЛИТ

110

5

223334444

2006

1

АНГЛ

201

4

987654321

2005

3

МАТЕМ

120

5

987654321

2005

3

ПСИХОЛ

101

5

987654321

2006

1

МАТЕМ

221

4

987654321

2006

1

МАТЕМ

242

3

135791357

2005

3

ИСТ

102

5

135791357

2005

3

ИСТ ИССК

112

5

135791357

2006

1

МАТЕМ

120

4

135791357

2006

1

МАТЕМ

141

3

147025836

2005

3

БИОЛ

113

4

147025836

2005

3

ХИМ

113

4

147025836

2006

1

МАТЕМ

120

2

147025836

2006

1

СТАТ

114

4

707070707

2005

3

МАТЕМ

221

4

707070707

2005

3

СТАТ

114

5

707070707

2006

1

МАТЕМ

242

2

707070707

2006

1

МАТЕМ

224

3

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

Ввод примеров данных вручную

  1. Откройте новую или существующую базу данных.

  2. на вкладке Создание в группе Таблицы нажмите кнопку Таблица.

    Изображение ленты Access

    Access добавит в базу данных новую пустую таблицу.

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

  3. Дважды щелкните первую ячейку в строке заголовков и введите имя поля из примера таблицы.

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

    Новое поле в режиме таблицы

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

  5. Введите данные в пример таблицы.

    По мере ввода данных Access определяет их тип для каждого поля. Для каждого поля таблицы задается тип данных, например "Число", "Текст" или "Дата/время". Это обеспечивает точный ввод данных и помогает предотвратить ошибки, например использование цифр номера телефона в вычислениях. Для этих примеров таблиц можно определить тип данных автоматически, но не забудьте проверить результаты.

  6. Завершив ввод данных, нажмите кнопку Сохранить или клавиши CTRL+S.

    Откроется диалоговое окно Сохранение документа.

  7. В поле Имя таблицы введите имя примера таблицы и нажмите кнопку ОК.

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

Завершив ввод примера данных, можете перейти к сравнению двух таблиц.

Если вас не интересует создание листа на основе примера данных, пропустите следующий раздел ("Создание листов с примерами данных").

Создание листов с примерами данных

  1. Запустите редактор электронных таблиц и создайте пустой файл. Если вы используете Excel, при его запуске по умолчанию создается пустая книга.

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

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

  4. Повторите шаги 2 и 3, чтобы скопировать второй пример таблицы на пустой лист и переименовать этот лист.

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

  5. Сохраните книгу в нужной папке на компьютере или в сети и переходите к следующей процедуре.

Создание таблиц базы данных на основе листов

  1. В новой или существующей базе данных:

    На вкладке Внешние данные в группе Импорт щелкните Excel.

    Изображение ленты Access

    -или-

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

    Откроется диалоговое окно Внешние данные — лист <имя программы>.

  2. Нажмите кнопку Обзор, найдите и откройте файл электронной таблицы, который вы создали на предыдущих этапах, и нажмите кнопку ОК.

    Откроется окно мастера импорта электронных таблиц.

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

  3. Нажмите кнопку Далее.

  4. На следующей странице мастера установите флажок Первая строка содержит названия столбцов, а затем нажмите кнопку Далее.

  5. Вы можете изменить имена полей и типы данных или пропустить некоторые поля, воспользовавшись текстовыми полями и списками в группе Параметры поля. В этом примере вам не нужно ничего изменять. Нажмите кнопку Далее.

  6. На следующей странице выберите вариант Не создавать ключ и нажмите кнопку Далее.

  7. По умолчанию Access использует имя листа для новой таблицы. Оставьте имя в поле Импорт в таблицу, а затем нажмите кнопку Готово.

  8. На странице Сохранение шагов импорта нажмите кнопку Закрыть, чтобы завершить работу мастера.

  9. Повторите шаги с 1 по 7 для каждого листа, чтобы создать для него таблицу.

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

Теперь все готово для сравнения таблиц "Учащиеся" и "Специализации". Так как связи между двумя таблицами не определены, вам необходимо создать объединения соответствующих полей в запросе. Таблицы содержат по несколько полей, и вам потребуется создать объединение для каждой пары общих полей: "Код учащегося", "Год", а также "Учебный план" (в таблице "Учащиеся") и "Специализация" (в таблице "Специализации"). В данном случае нас интересует только математика, поэтому можно ограничить результаты запроса с помощью условия поля.

  1. Откройте базу данных, в которой вы сохранили примеры таблиц.

  2. На вкладке Создание нажмите кнопку Конструктор запросов.

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

  4. Закройте диалоговое окно Добавление таблицы.

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

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

  7. Вам нужно создать еще два объединения. Для этого перетащите поле Год из таблицы Учащиеся в поле Год таблицы Специализации, а затем — поле Учебный план из таблицы Учащиеся в поле Специализация таблицы Специализации.

  8. В таблице Учащиеся дважды щелкните звездочку (*), чтобы добавить все поля таблицы в бланк запроса.

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

  9. В таблице Специализации дважды щелкните поле Специализация, чтобы добавить его в бланк.

  10. В бланке запроса снимите флажок в строке Показать столбца Специализация.

  11. В строке Условие отбора столбца Специализация введите МАТЕМ.

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

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

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

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

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

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

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

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

Изменение типа данных в поле "Код учащегося" таблицы "Специализации"

  1. Откройте базу данных, в которой вы сохранили примеры таблиц.

  2. В области навигации щелкните таблицу "Специализации" правой кнопкой мыши и выберите пункт Конструктор.

    Таблица "Специализации" откроется в режиме конструктора.

  3. В столбце Тип данных измените для поля Код учащегося тип данных Число на Текст.

  4. Закройте таблицу "Специализации". Нажмите кнопку Да, когда вам будет предложено сохранить изменения.

Сравнение примеров таблиц и поиск соответствующих записей с использованием условия поля

Ниже показано, как сравнить два поля "Код учащегося", используя поле из таблицы "Учащиеся" в качестве условия для поля из таблицы "Специализации". С помощью ключевого слова Like вы можете сравнить два поля, даже если они содержат данные разного типа.

  1. На вкладке Создать в группе Другое нажмите кнопку Конструктор запросов.

  2. В диалоговом окне Добавление таблицы дважды щелкните таблицу Учащиеся, а затем таблицу Специализации.

  3. Закройте диалоговое окно Добавление таблицы.

  4. Перетащите поле Год из таблицы Учащиеся в поле Год таблицы Специализации, а затем — поле Учебный план из таблицы Учащиеся в поле Специализация таблицы Специализации. Эти поля содержат данные одного типа, поэтому для их сравнения можно использовать объединения. Для сравнения полей с данными одного типа рекомендуется использовать объединения.

  5. Дважды щелкните звездочку (*) в таблице Учащиеся, чтобы добавить все поля таблицы в бланк запроса.

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

  6. В таблице Специализации дважды щелкните поле Код учащегося, чтобы добавить его в бланк.

  7. В бланке запроса снимите флажок в строке Показать столбца Код учащегося. В строке Условие отбора столбца Код учащегося введите Like [Учащиеся].[Код учащегося].

  8. В таблице Специализации дважды щелкните поле Специализация, чтобы добавить его в бланк.

  9. В бланке запроса снимите флажок в строке Показать столбца Специализация. В строке Условие отбора введите МАТЕМ.

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

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

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

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

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

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

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

×