Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
metod_bd.docx
Скачиваний:
17
Добавлен:
26.03.2015
Размер:
606.72 Кб
Скачать

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Поэтому в QBE-бланке перекрестного запроса всегда имеются 3 поля: одно из них используется для названия строк, второе – для названия столбцов и третье – для выбора соответствующего значения, которое должно размещаться на их пересечении.

Рис. 23. Окно создания перекрестного запроса

Рис. 24. Результат выполнения перекрестного запроса

Например, пусть в таблице «Контракты» необходимо разгруппировать заключенные с клиентами контракты по типу товаров. Для организации такого запроса необходимо выбрать в QBE-область поля: «Клиент», «Товар», «Количество» и выполнить команду Запрос/Перекрестный, которая добавит в QBE-бланк строки Групповая операция и Перекрестная таблица (см. рис. 23). Затем в строке QBE-бланка Групповая операция для полей «Клиент» и «Товар» задать функцию Группировка, а для поля «Количество» – функцию Sum. В строке Перекрестная таблица задать для поля «Клиент» функцию Заголовки строк, для поля «Товар» – функцию Заголовки столбцов и для поля «Количество» – функцию Значение. В результате выполнения данного запроса должна появиться таблица вида, представленного на рис. 24.

Выполните созданный запрос и сохраните его под именем «Клиент-товар-количество».

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]