54
В бланке запроса появятся новые строки «Групповая операция» и «Перекрест-
ная таблица». Для первых двух столбцов выберем групповую операцию «груп-
пировка» (чтобы не повторялись названия строк и столбцов), для третьего –
«Count» (подсчет количества). Укажем, что значения поля «Фамилия» (первый
столбец) образуют заголовки строк, поля «Название» - заголовки столбцов, а
поля «Код журнала
» - значения внутри таблицы (рис. 3.43).
Все, перекрестный запрос создан. Результат его работы был показан ранее
на рис. 3.40. В ячейках таблицы отображается количество подписок, оформлен-
ных клиентом (указанным в названии строки) на журнал (указанный в названии
столбца). Поскольку в таблице «Подписка» поля «КодКлиента» и «КодЖурна-
ла» образуют первичный ключ (их комбинации
не могут повторяться внутри
таблицы), Значения, отображаемые в созданном перекрестном запросе, должны
быть равны только «1». Впрочем, это правило может быть нарушено, если у не-
скольких клиентов будут одинаковые фамилии, или у нескольких журналов –
одинаковые названия. Внесем в созданный запрос некоторое «эстетическое»
усовершенствование для демонстрации применения групповой операции «Вы-
ражение» и
функции IIF(). Пусть в ячейках таблицы отображается не количе-
ство подписок клиента на журнал, а знак «+», если это количество больше нуля.
Заменим в третьей колонке бланка запроса групповую операцию «Count» на
«Выражение» и в строке «Поле» запишем следующее выражение:
IIf( Count( Подписка.КодЖурнала )>0; "+"; "")
Функция IIf() будет возвращать знак «+» для групп, для которых
значение,
возвращаемое функцией Count(), больше «0». Для остальных групп возвраща-
ется пустая строка. Функция Count(), как и раньше, присутствует в запросе, но
теперь она является частью более сложного выражения. На рис. 3.44 показаны
новый вид запроса и результат его работы. «ДаНет» - имя поля, содержащего
выражение. Оно не играет особой роли, поскольку нигде не отображается.
Некоторые
из приведенных выше примеров запросов были упрощены для
большей наглядности и могут быть непригодны для использования в реальных
базах данных.
Рис. 3.43. Перекрестный запрос