Applies ToAccess для Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

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

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

В этой статье

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

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

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

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

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

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

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

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

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

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

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

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

  1. На вкладке Файл нажмите кнопку Создать

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

См. также

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

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

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

Нужна дополнительная помощь?

Нужны дополнительные параметры?

Изучите преимущества подписки, просмотрите учебные курсы, узнайте, как защитить свое устройство и т. д.

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