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

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

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

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

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

Необходимо освежить свои о создании запросов на выборку основные? Читайте в статье Создание простого запроса на выборку.

Вот что нужно знать о создании запроса на объединение:

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

  • Запрос на объединение является SQL-запросом и должен быть написан непосредственно на языке SQL. Для написания SQL-запросов, включая запросы на объединение, нужно переключиться на режим SQL.

Действие 1. Создание запроса на выборку

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

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

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

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

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

  5. При желании можно добавьте условия в поля, введя соответствующие выражения в строке условия сетки поля.

  6. После добавления полей и условия отбора полей необходимо выполнить запрос на выборку и проверьте его вывод. На вкладке " Конструктор " в группе Результаты нажмите кнопку выполнить.

  7. Переключите запрос в конструктор.

  8. Сохраните запрос на выборку и не закрывайте его.

  9. Повторите эту процедуру для всех запросов на выборку, которые необходимо объединить.

Дополнительные сведения об использовании условий в запросе читайте в статье применение условий к запросу.

Действие 2. Объединение запросов на выборку

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

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

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

  3. На вкладке Конструктор в группе Запрос нажмите кнопку Объединение.

В Access скрывается окно конструктора запросов и отображается вкладка объекта режима SQL. На данном этапе эта вкладка будет пуста.

  1. Щелкните вкладку первого запроса на выборку, который необходимо добавить в запрос на объединение.

  2. На вкладке " Главная " выберите Вид > Режим SQL.

  3. Скопируйте инструкцию SQL для запроса на выборку. Щелкните вкладку запроса на объединение, который вы начали создавать в действии 1.

  4. Вставьте инструкцию SQL для запроса на выборку на вкладку объекта в режиме SQL.

  5. Удалите точку с запятой (;) в конце инструкции SQL для запроса на выборку.

  6. Нажмите клавишу ВВОД, чтобы переместить курсор вниз на одну строку, а затем введите в новой строке слово UNION .

  7. Щелкните вкладку следующего запроса на выборку, который необходимо добавить в запрос на объединение.

  8. Повторите действия 5—10, пока не будут скопированы и вставлены все инструкции SQL для запросов на выборку в окне режима SQL запроса на объединение. Не удаляйте точку с запятой и не вводите ничего после инструкции SQL в последнем запросе на выборку.

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

Результаты запроса на объединение отобразятся в режим таблицы.

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

Советы по использованию запросов на объединение

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

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

    SELECT field1, field2, ... "Product" AS type

    SELECT field1, field2, ... "Service" AS type

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

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

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

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

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

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

  1. Создайте и сохраните запрос на объединение.

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

  3. В диалоговом окне Добавление таблицы откройте вкладку Таблица.

  4. Дважды щелкните запрос на объединение и закройте диалоговое окно Добавление таблицы.

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

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

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

  7. В диалоговом окне Создание таблицы введите имя новой таблицы.

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

  9. Нажмите кнопку ОК.

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

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

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

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

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

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

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

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

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

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

  7. Во вставленном коде замените оператор LEFT JOIN на RIGHT JOIN.

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

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

    Например, если предложение FROM выглядит следующим образом:

    FROM Products RIGHT JOIN [Order Details] 
    ON Products.ID = [Order Details].[Product ID]

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

    WHERE Products.ID IS NULL

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

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

Дополнительные сведения читайте в статье Соединение источников данных в запросе.

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

Требования и синтаксис SQL для запроса на объединение

Требования к запросу на объединение

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

    Примечание : В запросах на объединение числовой и текстовый типы данных являются совместимыми.

  • Запрос на объединение является SQL-запросом и должен быть написан непосредственно на языке SQL. Для написания SQL-запросов, включая запросы на объединение, нужно переключиться на Режим SQL.

Синтаксис SQL в запросе на объединение

В запросе на объединение каждый запрос на выборку (или инструкция SELECT) содержит следующие предложения:

Предложение

Содержит список…

SELECT

полей, содержащих необходимые данные;

FROM

таблиц, содержащих эти поля;

Необязательное WHERE

условий для этих полей.

Инструкции SELECT объединяются с помощью ключевого слова UNION.

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

SELECT field_1[, field_2,…]
FROM table_1[, table_2,…]
UNION [ALL]
SELECT field_a[, field_b,...]
FROM table_a[, table_b,…];

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

SELECT name, price, warranty_available, exclusive_offer
FROM Products
UNION ALL
SELECT name, price, guarantee_available, exclusive_offer
FROM Services;

Давайте построчно рассмотрим предыдущий пример синтаксиса.

Синтаксис

Описание

Дополнительные сведения

SELECT имя, цена, доступна_гарантия, эксклюзивное_предложение

Первое предложение SELECT

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

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

В данном предложении SELECT перечислены идентификаторы полей: имя, цена, доступная_гарантия и эксклюзивное_предложение.

FROM Товары

Первое предложение FROM

Предложение FROM следует после предложения SELECT, а вместе они образуют базовую инструкцию SELECT.

После FROM следует список идентификаторов, обозначающих таблицы с полями, перечисленными в предложении SELECT.

В предложении FROM должно быть указано не менее одной таблицы.

В данном предложении FROM указан идентификатор таблицы Товары.

UNION ALL

Ключевое слово UNION и необязательное ключевое слово ALL.

Результаты инструкции SELECT, предшествующей слову UNION, будут объединены с результатами инструкции SELECT, следующей после UNION.

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

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

Ключевое слово ALL следует использовать только при соблюдении указанных ниже условий.

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

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

  • Необходимо видеть повторяющиеся строки.

SELECT имя, цена, наличие_гарантии, эксклюзивное_предложение

Второе предложение SELECT

Некоторые правила:

  • Второе предложение SELECT должно содержать такое же количество полей, что и первое.

  • Поля, которые содержат общие данные, должны появляться в таком же порядке в предложении.

  • Поля, которые содержат общие данные, должны содержать одинаковые или совместимые типы данных.

Примечание : Имена полей в выводе запроса на объединение берутся из предложения SELECT. Так, в данном примере данные из полей "доступная_гарантия" и "наличие_гарантии" в выходных данных запроса называются "гарантия_доступная".

FROM Услуги

Второе предложение FROM

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

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

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

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

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

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

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

×