Перекрестные SQL запросы в СУБД Access

RSS, Twitter, Vkontakte, Facebook

SQL запросы на выборку

Перекрестные SQL запросы в СУБД Access 2003 и 2007

Автор: Владимир Ткаченко

Источник: Обучение в интернет

В данной статье рассмотрим перекрестные SQL запросы на выборку данных из таблиц БД Access. Для создания перекрестного SQL запроса откроем базу данных sql_training_st1_param.mdb.

Перекрестные запросы применяются в том случае если нужно упорядочить информацию из базы данных по двум или более параметрам. Cоздать перекрестный запрос в СУБД Access 2003 - 2007 можно используя, Мастер создания перекрестных запросов, конструктор запросов и режим SQL. Например, в результате выполнения обычного запроса на выборку получим несгруппированные по фамилиям и дисциплинам данные (рис.1).

Простой запрос на выборку
Рис. 1. Результат выполнения обычного запроса на выборку данных

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

Перекрестный запрос на выборку
Рис. 2. Результат выполнения перекрестного запроса на выборку данных

Как следует из таблиц рис. 1 и 2, в таблице рис. 2 представлена сгруппированная информация, т.е. представлена более упорядоченная информация по сравнению с представленной информацией в таблице рис. 1.

Для создания перекрестного SQL запроса или инструкции SQL (рис. 2) необходимо в открытой БД sql_training_st1_param.mdb на вкладке "Создание" выбрать команду "Конструктор запросов". Откроется активное окно диалога "Добавление таблицы" на фоне неактивного окна «Запрос1», далее надо закрыть окно диалога "Добавление таблицы". Затем на контекстной вкладке "Конструктор" выбрать режим SQL, выполнив команду SQL, в результате в окне редактирования будет отображаться оператор SELECT.

Удалим оператор SELECT, и введем с клавиатуры следующую инструкцию SQL:
TRANSFORM Min(Успеваемость.Оценка) AS [Min-Оценка]
SELECT Студенты.Фамилия, Студенты.Имя
FROM Студенты INNER JOIN (Дисциплины INNER JOIN Успеваемость ON Дисциплины.КодДисциплины = Успеваемость.КодДисциплины) ON Студенты.КодСтудента = Успеваемость.КодСтудента
GROUP BY Студенты.Фамилия, Студенты.Имя
PIVOT Дисциплины.Название;

Перекрестный sql запрос на выборку
Рис. 3. Перекрестный SQL запрос на выборку данных

Эта инструкция состоит из пяти предложений "TRANSFORM...", "SELECT. . .", "FROM. . .", "GROUP BY..." и "PIVOT...".
Первое предложение содержит оператор TRANSFORM, который является необязательным. Но если его включить, то его надо включить первым оператором в инструкцию SQL. За этим оператором была включена агрегатная функция "Min(Успеваемость.Оценка) AS [Min-Оценка]".

Второе предложение содержит оператор SELECT и идентификатор "Студенты.Фамилия, Студенты.Имя". Выбор данных осуществляется из двух полей "Фамилия" и "Имя" одной таблицы "Студенты". Оператор SELECT указывает поля, которые используются как заголовки строк в таблице результатов перекрестного запроса.

Третье предложение содержит оператор FROM и идентификатор "Студенты INNER JOIN (Дисциплины INNER JOIN Успеваемость ON Дисциплины.КодДисциплины = Успеваемость.КодДисциплины) ON Студенты.КодСтудента = Успеваемость.КодСтудента". FROM - определяет таблицы "Студенты", "Дисциплины" и "Успеваемость", которые содержат поля, и обеспечивает взаимосвязи таблиц через ключевые поля таблиц с помощью конструкции INNER JOIN ... ON.

Оператор GROUP BY используется для определения групп "Студенты.Фамилия, Студенты.Имя", к которым применяется агрегатная функция Min.

В операторе PIVOT перечислены столбцы для вывода информации о дисциплинах.

В результате выполнения команды "Сохранить" в «Области переходов» появится объект - «Запросы: cros-tab_sql». После сохранения перекрестного SQL запроса на выборку данных необходимо выполнить этот запрос, щелкая на пиктограмме «Выполнить» (рис.3).

Результаты выполнения команды «Выполнить» представлены на рис. 4.

Результаты выполнения перекрестного SQL запроса на выборку
Рис. 4. Результаты выполнения перекрестного SQL запроса на выборку данных

Сохраним базу данных sql_training_st1_param.mdb с созданным перекрестным SQL запросом на выборку данных (cros-tab_sql) под именем sql_training_st1_cross-tab.mdb.

Скачать sql_training_st1_cross-tab.mdb

Подпишитесь на мою рассылку СУБД MS Access 2003, 2007 -это просто!