Запросы в СУБД Paradox. Формирование запросов для типичных случаев, страница 4

К запросам по получению информации для одной таблицы тесно примыкает операция получения перекрестной таблицы (кросстабуляция). Не смотря на то, что для нее не используются средства QBE рассмотрим ее реализацию здесь в связи с тем, что она очень часто используется совместно с QBE- запросами.

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

+----------------------------------------------------------------+

¦                 ¦            Виды занятий                      ¦

¦ Дисциплина      +----------------------------------------------+

¦                 ¦   Лекции¦ Пр.зан.¦ Лаб.раб.¦Конс.¦ ...  ¦Экз.¦

+-----------------+---------+--------+---------+-----+------+----¦

¦Иностранный язык ¦         ¦   30   ¦         ¦     ¦      ¦    ¦

+-----------------+---------+--------+---------+-----+------+----¦

¦Физкультура      ¦         ¦   60   ¦         ¦     ¦      ¦    ¦

+-----------------+---------+--------+---------+-----+------+----¦

¦Программирование ¦   40    ¦   20   ¦   40    ¦  4  ¦      ¦ 15 ¦

+----------------------------------------------------------------+

Рисунок 6а.11

+----------------------------------+     ------------------------+

¦ Дисциплина  ¦Вид занят¦й   Объем ¦     ¦Вид зан. ¦ Наименование¦

+-------------+---------+----------¦     +---------+-------------¦

¦ Иностранный ¦    2    ¦     30   ¦     ¦   1     ¦   Лекции    ¦

¦   язык      ¦         ¦          ¦     +---------+-------------¦

+-------------+---------+----------¦     ¦   2     ¦   Пр.зан.   ¦

¦ Физкультура ¦    2    ¦     60   ¦     +---------+-------------¦

+-------------+---------+----------+     ¦   3     ¦   Лаб.раб.  ¦

¦ Программиров¦    1    ¦     40   ¦     +---------+-------------¦

+-------------+---------+----------¦     ¦   4     ¦   Конс.     ¦

¦ Программиров¦    2    ¦     20   ¦     +---------+-------------¦

+-------------+---------+----------¦     ¦   5     ¦   Экз.      ¦

¦ Программиров¦    3    ¦     40   ¦     ¦         ¦             ¦ +-------------+---------+----------¦     +-----------------------+

¦ Программиров¦    4    ¦      4   ¦

+-------------+---------+----------¦

¦ Программиров¦    5    ¦     15   ¦

+----------------------------------+

Рисунок 6а.12

Кросс-табуляция (создание перекрестных таблиц) конвертирует данные из нормализованной формы к структуре электронной таблицы. Она позволяет также суммировать данные из одного поля в группах записей, определяемых значениями двух других полей. Результативная таблица называется СУММАРНОЙ ПЕРЕКРЕСТНОЙ ТАБЛИЦЕЙ, имеет идентификатор CrossTab и имеет статус временной таблицы. Информация в эту таблицу извлекается путем указания трех колонок исходной таблицы:

¨  поле для создания меток строк,

¨  поле для создания меток столбцов,

¨  поле значений.

В нашем случае поле Disc будет служить для меток строк, поле Vz - для создания меток столбцов, поле Q - для подсуммирования. При этом предполагается, что для таблиц БД выполнен запрос с результатом, представленным на рис. 6а.13. Выполнив этот запрос, а затем указав в услуге Image\Graph\CrossTab нужные поля Disc, Vz и Q, получим

Tab1

+----------------------------------+

¦ Дисциплина  ¦Вид занят¦    Объем ¦

¦-------------+---------+----------¦

¦  Disc*      ¦  Vz*    ¦     Q    ¦