Запросы с вычисляемым полем

Как уже обсуждалось выше в пособии (см. раздел 2), таблицы в БД предназначены только для хранения информации и в них в соответствии с правилами нормализации не может быть полей, значения которых являются производными от других полей таблицы. Другими словами, в самих таблицах не может проводиться преобразование данных на основе уже имеющейся в них информации. Для этих целей в БД используются таблицы запросов, а именно вычисляемые по­ля в запросах.

 
 

Рис. 22. Окно Конструктора для создания итогового запроса

В качестве примера рассчитаем суммы контрактов, заключенных сотрудниками. Для формирования запроса будем использовать таблицы «Контракты». Для запроса выберите поля: «Сотрудник», «Товар», «Цена», «Количество». В следующем свободном поле QBE-бланка запроса введите выражение для вычисления:

Стоимость:[Количество] *[Цена]

Перед выражением вводится имя создаваемого в процессе запроса вычисляемо­го поля «Стоимость» с двоеточием. Это имя появится в результате запроса в итоговой таблице в качестве заголовка поля. Аналогичный прием можно использовать и для переименования других полей в таблице запроса, которая появится на экране в результате его выполнения. Фактически этой операцией мы вводим заголовок поля в таблице, оставляя имя поля прежним, т.е., хотя поле, например, «Количество» теперь в таблице запроса будет иметь заголовок «Суммарное количество», его имя в вышеприведенной формуле для расчета остается прежним – «Количество». Заметим, что эту же операцию переименования поля можно проделать, вызвав контекстное меню щелчком правой кнопки мыши по полю и задав в перечне свойств поля соответствующее значение свойству Подпись.

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

· для поля «Сотрудник» функцию Группировка,

· для поля «Товар» функцию Группировка,

· для поля «Количество» функ­цию Sum,

· для поля «Цена» функцию Avg, которая рассчитает среднее значение цены на данный товар,

· для вычисляемого поля "Стоимость" функ­цию Выражение, которая будет выполнять вычисление в соответствии с заданным для вычисляемого поля выражением.

Выполните сформированный запрос. Сохраните созданный запрос под именем «Стоимость контрактов».