Скачиваний:
43
Добавлен:
10.02.2015
Размер:
4.33 Mб
Скачать

3.3. Проектирование перекрестных запросов

Перекрестные запросы подобны структурам табличного редактора Excel, в которых присутствуют заголовки строк и заголовки столбцов. В ячейках таблицы располагаются числовые данные. Примером такой таблицы может быть ведомость зарплаты. Заголовки строк – фамилии, заголовки столбцов – даты, в ячейках располагаются суммы. В СУБД Access обычную таблицу можно преобразовать в перекрестную таблицу, то есть сформировать запрос. В качестве примера такого преобразования используем следующий запрос на выборку, приведенный на рисунке 3.17:

Рис. 3.17. Исходный запрос на выборку

Для преобразования этого запроса в перекрестный необходимо выбрать в меню, которое показано на рисунке 3.18, команду «Запрос/Перекрестный».

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

Рис. 3.18. Начало формирования перекрестного запроса

Рис. 3.19. Преобразование исходного запроса

Как видно из последнего рисунка, в бланке запроса возникли две новые строки «Групповая операция» и «Перекрестная таблица». По умолчанию в строке «Групповая операция» установлено значение «Группировка», которое означает, что записи группируются по одинаковым значениям. Например, если в таблице «Книги» есть несколько одноименных книг одного и того же автора, то при группировке по полям «Автор» и «Название» в перекрестном запросе эта одноименная книга будет представлена один раз. По полю «Цена» группировать данные не имеет смысла, для этого поля лучше выбрать из предлагаемого списка сумму (Sum), что отражено на рисунке 3.20:

Рис. 3.20. Назначение полям групповых операций

В строке бланка запроса «Перекрестная таблица» для всех полей необходимо выбрать из списка их назначение. Результат такого выбора показан на рисунке 3.21:

Рис. 3.21. Заполнение строки «Перекрестная таблица»

Для следующих данных, представленных в таблице «Книги» и на рисунке 3.22, результат выполнения спроектированного перекрестного запроса в режиме просмотра приведен на рисунке 3.23.

Рис. 3.22. Таблица «Книги»

Рис. 3.23. Результат выполнения перекрестного запроса

Как видно из результатов выдачи перекрестного запроса, суммарная стоимость книг Грина «Алые паруса» – 170 р. Можно привести множество примеров, когда перекрестные запросы оказываются очень полезными.

В режиме SQL полученный перекрестный запрос выглядит так:

TRANSFORM Sum(Книги.Цена) AS [Sum-Цена]

SELECT Книги.Автор

FROM Книги

GROUP BY Книги.Автор

PIVOT Книги.Название;

Ключевое слово TRANSFORM обозначает перекрестный запрос. Конструкция Sum(Книги.Цена) указывает на необходимость выполнения сложения значений полей «Цена» для одноименных строк и столбцов запроса. Конструкция AS [Sum-Цена] используется для назначения суммарной цене имени «Sum-Цена». Конструкция SELECT Книги.Автор FROM Книги показывает, что выбираются данные об авторах из таблицы «Книги». Конструкция GROUP BY Книги.Автор указывает на то, что данные группируются по значению поля «Автор» и в качестве заголовков строк перекрестной таблицы используется значение поля «Автор» таблицы «Книги». Конструкция PIVOT Книги.Название показывает, что в качестве привязки к столбцам запроса используется поле «Название» таблицы «Книги».