Использование инструкций SQL для создания запросов
Есть несколько типов запросов, которые невозможно создать с помощью Конструктора запросов. Их можно создать, вводя соответствующую инструкцию в окне SQL. Для этого нужно:
- Создать новый запрос с использованием Конструктора запросов.
- Закрыть диалоговое окно Добавление таблицы (Show Table), не добавляя таблиц.
- Выбрать команду Вид › Режим SQL (View › SQL View) для вывода окна SQL.
- Удалить весь текст, который может быть выведен в окне SQL (обычно по умолчанию выводится SELECT DISTINCTROW;).
- Ввести в окне инструкцию SQL, используя для ввода новой строки комбинацию клавиш CTRL + Enter.
- Нажать на панели инструментов кнопку Запуск (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.
Рис. 8.59. Запрос на объединение
Рис. 8.60. Результирующее множество запроса "Клиенты и поставщики по городам"