- •Задание
- •Основные сведения
- •В основе большинства sql-запросов лежит инструкция select. По этой инструкции ядро базы данных Microsoft Jet возвращает данные из базы данных в виде набора записей.
- •Подчиненные запросы sql
- •Синтаксис
- •Дополнительные сведения
- •Инструкция transform Создает перекрестный запрос.
- •Операция union
- •Инструкция insert into
- •Инструкция delete
- •Инструкция update
- •Содержание отчета
Инструкция transform Создает перекрестный запрос.
TRANSFORM статФункцияинструкцияSelectPIVOTполе[IN (значение_1[,значение_2[, ...]])]
Ниже перечислены аргументы инструкции TRANSFORM:
Элемент |
Описание |
статФункция |
Статистическая функция SQL,обрабатывающая указанные данные. |
инструкцияSelect |
Инструкция SELECT. |
поле |
Поле или выражение, которое содержит заголовки столбцов для результирующего набора. |
значение_1,значение_2 |
Фиксированные значения, используемые при создании заголовков столбцов. |
Когда данные сгруппированы с помощью перекрестного запроса, можно выбирать значения из заданных столбцов или выражений как заголовки столбцов. Это позволяет просматривать данные в более компактной форме, чем при работе с запросом на выборку.
Инструкция TRANSFORM является необязательной, но если она присутствует, то должна быть первой инструкцией в строке SQL. Она должна находиться впереди инструкции SELECT, которая указывает поля, содержащие заголовки строк, и предложения GROUP BY, которое задает группировку по строкам. При желании можно включить и другие предложения, например WHERE, для описания дополнительных условий отбора и сортировки. Кроме того, можно использовать подчиненные запросыкак предикаты в перекрестном запросе, особенно в предложении WHERE.
Значения, возвращенные аргументом поле, используются в качестве заголовков столбцов в результирующем наборе запроса. Например, продажи по месяцам в перекрестном запросе образуют результирующую таблицу из 12 столбцов. Аргументполеможно ограничить, чтобы создать заголовки из фиксированных значений (значение_1,значение_2), перечисленных в необязательном предложении IN. Кроме того, фиксированные заголовки, которым не соответствуют реальные данные, можно использовать для создания дополнительных столбцов. В приведенном примере определяется максимальная сумма заказов клиентов на основе запросаСуммаПоЗаказам.
TRANSFORM Max([СуммаПоЗаказам].[ПолнаяСтоимостьСДоставкой]) AS [Max-ПолнаяСтоимостьСДоставкой]
SELECT [СуммаПоЗаказам].[Название]
FROM СуммаПоЗаказам
GROUP BY [СуммаПоЗаказам].[Название]
PIVOT [СуммаПоЗаказам].[КодЗаказа];
Операция union
Создает запрос на объединение,который объединяет результаты нескольких независимых запросов или таблиц.
Синтаксис
[TABLE] запрос_1 UNION [ALL] [TABLE] запрос_2 [UNION [ALL] [TABLE] запрос_n [ ... ]]
Ниже перечислены аргументы операции UNION:
Элемент |
Описание |
запрос_1-n |
Инструкция SELECT, имя сохраненного запроса или имя сохраненной таблицы, перед которым стоит зарезервированное слово TABLE. |
Простой запрос на объединение
Следующий запрос на объединение содержит две инструкции SQL SELECT, определяющие возвращение из таблиц «Поставщики» и «Клиенты» названий организаций и городов, находящихся в указанной стране.
Возврат в начало
Сортировка в запросе на объединение
В следующем запросе на объединение отбираются все названия организаций и городов из таблиц «Поставщики» и «Клиенты» и выполняется сортировка по названием городов:
SELECT [Название], [Город]
FROM [Поставщики]
UNION SELECT [Название], [Город]
FROM [Клиенты]
ORDER BY [Город];
Переименование полей в запросе на объединение
В следующем запросе на объединение поле «Название» получает при выводе результатов имя «Поставщик/Клиент»:
SELECT [Название] AS [Поставщик/Клиент], [Город]
FROM [Поставщики]
UNION SELECT [Название] AS [Поставщик/Клиент], [Город]
FROM [Клиенты];
Дополнительные сведения
В одной операции UNION можно объединить в любом наборе результаты нескольких запросов, таблиц и инструкций SELECT. В следующем примере объединяется существующая таблица «Новые счета» и инструкции SELECT:
TABLE [Новые счета] UNION ALL
SELECT *
FROM Клиенты
WHERE СуммаЗаказа > 1000;
По умолчанию повторяющиеся записи не возвращаются при использовании операции UNION, однако в нее можно добавить предикат ALL, чтобы гарантировать возврат всех записей. Кроме того, такие запросы выполняются быстрее.
Все запросы, включенные в операцию UNION, должны отбирать одинаковое число полей; при этом типы данных и размеры полей не обязаны совпадать.
Используйте псевдонимы только в первом предложении SELECT, потому что в остальных они пропускаются. В предложении ORDER BY ссылайтесь на поля по их названиям в первом предложении SELECT.
Примечания
В каждом аргументе запросадопускается использование предложения GROUP BY или HAVING для группировки возвращаемых данных.
В конец последнего аргумента запросаможно включить предложение ORDER BY, чтобы отсортировать возвращенные данные.