Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Диго С.М. Базы данных проектирование и использование.doc
Скачиваний:
723
Добавлен:
14.05.2016
Размер:
12.04 Mб
Скачать

6.2.14. Перекрестные запросы

Перекрестные запросы служат для более компактного отображе­ния информации (схожего с изображением в электронных таблицах). В перекрестном запросе отображаются результаты статистических расчетов (такие, как суммы, количество записей, средние значения), выполненных по данным из одного поля. Эти результаты группиру­ются по двум наборам данных в формате перекрестной таблицы. Пер-: вый набор выводится в левом столбце и образует заголовки строк, а второй - выводится в верхней строке и образует заголовки столбцов.

Например, в таблице «Сотрудники» имеются сведения о зарплате каждого сотрудника, а также признаки, на какой кафедре и в какой должности работает каждый сотрудник. Требуется для каждой кафед­ры определить общий фонд зарплаты, а по каждой должности - сред­нюю по каждой кафедре зарплату.

Для создания перекрестного запроса следует воспользоваться позицией «Перекрестный запрос» в окне Новый запрос {см. рис. 6.5) или выбрать соответствующую строку в меню Запрос. Далее необхо­димо выполнить ряд шагов, предлагаемых мастером по созданию пе­рекрестных запросов.

При создании перекрестного запроса в качестве источника данных можно задать только одну таблицу (рис. 6.29). Если для реализации запроса требуются поля из разных таблиц, то надо предварительно со­здать вспомогательный запрос, который будет включать все требуемые поля. Так, если в создаваемом нами запросе требуется выводить назва­ние кафедры, то следует создать запрос, базирующийся на таблицах «Кафедра» и «Сотрудник», и этот запрос выбрать в качестве источника для создаваемого перекрестного запроса. Будем выводить в ответ «Код_кафедры» и поэтому выберем таблицу «Сотрудник».

В качестве заголовков строк будет использоваться «Код_кафед-ры». Для того чтобы задать это, нужно позиционироваться на этом поле и щелкнуть по кнопке, после чего экран примет вид, пред­ставленный на рис. 6.30.

В качестве заголовков столбцов следует выбрать поле «Долж­ность» (рис. 6.31).

Далее следует определить поле на «перекрестке» строки и столбца и выбрать функцию, которая будет применена к этому полю (рис. 6.32). На этом шаге можно выбрать только одну какую-то функцию. В том запросе, который мы реализуем, по кафедре требуется определить общий фонд зарплаты (т.е. использовать функцию Sum), а по каждой должности вычислить среднюю зарплату на каждой кафедре (т.е. ис­пользовать функцию Avg). Такой запрос с использованием Мастера задать нельзя. Выберем на этом шаге функцию Avg, а потом в режиме Конструктор видоизменим полученный с помощью Мастера запрос. В результате получим перекрестный запрос, который определил сред­нюю зарплату по каждой кафедре и по каждой должности в пределах каждой кафедры.

На последнем шаге создания перекрестного запроса необходимо задать имя этого запроса.

Запрос, полученный в результате использования Мастера в режи­ме Конструктор (рис.6.33), не совсем соответствует тому, что мы хотели иметь в ответе, так как в результате для каждой кафедры будет посчитана средняя зарплата, а не общий фонд, как требовалось. Для того чтобы определить требуемую сумму, необходимо сделать соот­ветствующее изменение в «Конструкторе запросов» (рис. 6.34).

Результат выполнения этого запроса представлен на рис. 6.35.