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

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

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

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

В этой статье

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

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

Создание и изменение запроса для сравнения по нескольким полям

Создание собственного запроса на поиск записей, не имеющих подчиненных

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

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

  • Одна таблица используется для хранения данных об объектах (например, товарах), а другая таблица — для хранения данных о действиях (например, заказах) в отношении эти объектов.    

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

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

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

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

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

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

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

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

Инструкции по настройке базы данных "Борей"

  1. На вкладке Файл нажмите кнопку Создать. Если вы используете Access 2007, нажмите кнопку Microsoft Office Изображение кнопки Office и выберите пункт Создать.

  2. В зависимости от используемой версии Access поиск базы данных "Борей" можно выполнить в поле "Поиск" либо в области слева (в разделе Категории шаблонов выберите пункт Локальные шаблоны).

  3. В разделе Локальные шаблоны выберите шаблон Борей 2007 и нажмите кнопку Создать.

  4. Следуйте инструкциям на странице Борей (на вкладке объектов Заставка), чтобы открыть базу данных, а затем закройте окно входа.

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

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

  1. На вкладке Создание в группе Запросы нажмите кнопку Мастер запросов. Если вы используете Access 2007, на вкладке Создание в группе Другое нажмите кнопку Мастер запросов.

    Две кнопки в группе "Запросы" на ленте Access: "Мастер запросов" и "Конструктор запросов"
  2. В диалоговом окне Новый запрос дважды щелкните пункт Поиск записей, не имеющих подчиненных.

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

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

    Выберите таблицу или запрос со связанными записями в диалоговом окне мастера поиска записей без подчиненных
  5. На третьей странице выберите поля, связывающие таблицу, нажмите < = >, а затем нажмите кнопку Далее. Можно выбрать только одно поле из каждой таблицы. В нашем примере нужно выбрать поле "ИД" из таблицы "Товары" и поле "ИД товара" из таблицы "Сведения о заказе". Убедитесь в том, что сопоставлены нужные поля, просмотрев поле Соответствующие поля.

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

    Обратите внимание на то, что поля "ИД" и "ИД товара" могут быть уже выбраны из-за существующих отношений, встроенных в шаблон.

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

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

    Введите имя запроса в диалоговом окне мастера поиска записей без подчиненных

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

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

Создание и изменение запроса для сравнения по нескольким полям

  1. На вкладке Создание в группе Запросы нажмите кнопку Мастер запросов. Если вы используете Access 2007, на вкладке Создание в группе Другое нажмите кнопку Мастер запросов.

  2. В диалоговом окне Новый запрос дважды щелкните пункт Поиск записей, не имеющих подчиненных.

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

  4. На второй странице выберите связанную таблицу и нажмите кнопку Далее. В нашем примере нужно выбрать таблицу "Сведения о заказе".

  5. На третьей странице выберите поля, связывающие таблицы, щелкните значок < = >, а затем нажмите кнопку Далее. Можно выбрать только одно поле из каждой таблицы. В нашем примере нужно выбрать поле "ИД" из таблицы "Товары" и поле "ИД товара" из таблицы "Сведения о заказе". Убедитесь, что сопоставляются нужные поля, просмотрев текст в поле Соответствующие поля. Остальные поля можно объединить после завершения работы мастера.

    Обратите внимание на то, что поля "ИД" и "ИД товара" могут быть уже выбраны из-за существующих отношений, встроенных в шаблон.

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

  7. На пятой странице выберите параметр Изменить структуру запроса и нажмите кнопку Готово.

    Запрос откроется в режиме конструктора.

  8. Обратите внимание, что в бланке запроса две таблицы объединены по полям, указанным на третьей странице мастера (в нашем примере это поля "ИД" и "ИД товара"). Создайте объединение для каждой оставшейся пары связанных полей, перетащив их из первой таблицы (то есть таблицы, которая содержит записи, не имеющие подчиненных) во вторую таблицу. В нашем примере необходимо перетащить поле "Цена по прейскуранту" из таблицы "Товары" на поле "Цена за единицу" таблицы "Сведения о заказе".

  9. Дважды щелкните линию объединения, соединяющую поля. Откроется диалоговое окно Параметры объединения. Для каждого объединения выберите вариант, который включает все записи из таблицы "Товары", и нажмите кнопку ОК.

    В бланке запроса на конце каждой линии объединения появится стрелка.

    Тип объединения обозначен типом линии.

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

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

    Примечание : Убедитесь, что все стрелки объединений имеют одинаковое направление.

  10. В таблице со связанными записями (например, в таблице "Сведения о заказе") дважды щелкните каждое поле, объединенное с первой таблицей, кроме поля, выбранного на третьей странице мастера (в данном случае — "ИД товара"). Для каждого из полей снимите флажок в строке Показать и введите значение Is Null в строке Условия.

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

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

    Запрос вернет названия товаров, которые отсутствуют в существующих заказах.

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

Создание собственного запроса на поиск записей, не имеющих подчиненных

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

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

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

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

  5. Дважды щелкните объединение. Откроется диалоговое окно Параметры объединения. Для каждого объединения выберите вариант 2 и нажмите кнопку ОК.

    В бланке запроса на конце каждой линии объединения появится стрелка.

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

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

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

  7. В таблице со связанными записями дважды щелкните поля, объединенные с первой таблицей. Для каждого из этих полей снимите флажок в строке Показать и введите значение Is Null в строке Условия.

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

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

См. также

Создание простого запроса на выборку

Поиск повторяющихся записей с помощью запроса

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

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

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

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

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

×