Иллюстрированный самоучитель по Microsoft Access 2002

Использование инструкций SQL для создания запросов

Есть несколько типов запросов, которые невозможно создать с помощью Конструктора запросов. Их можно создать, вводя соответствующую инструкцию в окне SQL. Для этого нужно:

  1. Создать новый запрос с использованием Конструктора запросов.
  2. Закрыть диалоговое окно Добавление таблицы (Show Table), не добавляя таблиц.
  3. Выбрать команду Вид › Режим SQL (View › SQL View) для вывода окна SQL.
  4. Удалить весь текст, который может быть выведен в окне SQL (обычно по умолчанию выводится SELECT DISTINCTROW;).
  5. Ввести в окне инструкцию SQL, используя для ввода новой строки комбинацию клавиш CTRL + Enter.
  6. Нажать на панели инструментов кнопку Запуск (Run), чтобы вывести результирующее множество записей.

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

Создание запросов на объединение записей

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

[TABLE] запрос_1 UNION[ALL][TABLE] запрос_2 [UNION[ALL][TABLE] запрос_n[...]],

Где запрос_1, запрос_2,… запрос_п – инструкция SELECT, имя сохраненного запроса или имя сохраненной таблицы, перед которым стоит зарезервированное слово TABLE.

В каждом аргументе запрос_1 допускается применение предложения GROUP BY или HAVING для группировки возвращаемых данных. В конец последнего аргумента запрос_п можно включить предложение ORDER BY, чтобы отсортировать возвращенные данные. Таким образом, группировка записей может выполняться в каждом из объединяемых запросов или таблиц, а сортировка выполняется только в результирующем множестве записей запроса на объединение. В качестве поля для сортировки нужно указывать имена полей из первого запроса или таблицы, т. к. именно эти имена будут выступать в качестве имен полей в результирующем множестве запроса.

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

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

Для создания запроса на объединение существует специальная команда меню Запрос › Запрос SQL › Запрос на объединение (Query › SQL Specific › Union), которая доступна в режиме Конструктора запросов. При выполнении этой команды открывается пустое окно Режим SQL, в которое нужно ввести инструкцию.

На рис. 8.59 показана инструкция SQL, содержащая операцию UNION, для запроса "Клиенты и поставщики по городам" (Customers and Suppliers by City), который содержится в базе данных "Борей". Чтобы открыть окно SQL, откройте список запросов в окне базы данных, выделите запрос "Клиенты и поставщики по городам" и нажмите кнопку Конструктор (Design). При этом кнопка и команда меню Вид › Конструктор (View › Design View) становятся недоступными.

Результат выполнения запроса на объединение "Клиенты и поставщики по городам" приведен па рис. 8.60.

Иллюстрированный самоучитель по Microsoft Access 2002 › Редактирование и анализ данных с помощью запросов › Использование инструкций SQL для создания запросов
Рис. 8.59. Запрос на объединение

Иллюстрированный самоучитель по Microsoft Access 2002 › Редактирование и анализ данных с помощью запросов › Использование инструкций SQL для создания запросов
Рис. 8.60. Результирующее множество запроса "Клиенты и поставщики по городам"

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