
- •Работа с базами данных в субд access
- •Введение
- •Контрольные вопросы
- •1.2. Нормализация отношений в рбд
- •1.3. Типы связей и ключей в рбд
- •Контрольные вопросы
- •2. Создание таблиц и связей в субд access
- •2.1. Создание бд в субд Access
- •2.2. Создание таблиц в режиме Конструктор
- •Контрольные вопросы
- •3. Организация связей между таблицами и заполнение таблиц
- •Контрольные вопросы
- •4. Запросы в субд access
- •4.1. Запрос на выборку данных
- •4. 2. Создание запроса в режиме Конструктор
- •4.3. Запрос с параметром
- •4.4. Итоговые запросы
- •4.5. Запросы с вычисляемым полем
- •Стоимость:[Количество] *[Цена]
- •4.6. Перекрестные запросы
- •4.7. Запрос в Режиме sql
- •Контрольные вопросы
- •5. Формы в субд access
- •5.1. Создание форм на основе Мастера форм
- •5.2. Построение диаграмм
- •5.3. Конструктор форм
- •Контрольные вопросы
- •6. Отчеты в субд access
- •Контрольные вопросы
- •Литература
- •Содержание
4.5. Запросы с вычисляемым полем
Как уже обсуждалось выше в пособии (см. раздел 2), таблицы в БД предназначены только для хранения информации и в них в соответствии с правилами нормализации не может быть полей, значения которых являются производными от других полей таблицы. Другими словами, в самих таблицах не может проводиться преобразование данных на основе уже имеющейся в них информации. Для этих целей в БД используются таблицы запросов, а именно вычисляемые поля в запросах.
Рис.
22. Окно
Конструктора
для создания итогового запроса
В качестве примера рассчитаем суммы контрактов, заключенных сотрудниками. Для формирования запроса будем использовать таблицы «Контракты». Для запроса выберите поля: «Сотрудник», «Товар», «Цена», «Количество». В следующем свободном поле QBE-бланка запроса введите выражение для вычисления:
Стоимость:[Количество] *[Цена]
Перед выражением вводится имя создаваемого в процессе запроса вычисляемого поля «Стоимость» с двоеточием. Это имя появится в результате запроса в итоговой таблице в качестве заголовка поля. Аналогичный прием можно использовать и для переименования других полей в таблице запроса, которая появится на экране в результате его выполнения. Фактически этой операцией мы вводим заголовок поля в таблице, оставляя имя поля прежним, т.е., хотя поле, например, «Количество» теперь в таблице запроса будет иметь заголовок «Суммарное количество», его имя в вышеприведенной формуле для расчета остается прежним – «Количество». Заметим, что эту же операцию переименования поля можно проделать, вызвав контекстное меню щелчком правой кнопки мыши по полю и задав в перечне свойств поля соответствующее значение свойству Подпись.
Для получения окончательного варианта запроса необходимо, как это обсуждалось в предыдущем разделе пособия, сгруппировать результаты запроса, выполнив команду Вид/Групповые операции. При этом, в соответствии с логикой формируемого запроса, в строке Групповая операция необходимо выбрать:
для поля «Сотрудник» функцию Группировка,
для поля «Товар» функцию Группировка,
для поля «Количество» функцию Sum,
для поля «Цена» функцию Avg, которая рассчитает среднее значение цены на данный товар,
для вычисляемого поля "Стоимость" функцию Выражение, которая будет выполнять вычисление в соответствии с заданным для вычисляемого поля выражением.
Выполните сформированный запрос. Сохраните созданный запрос под именем «Стоимость контрактов».
4.6. Перекрестные запросы
Перекрестные запросы используются в тех случаях, когда необходимо разгруппировать имеющиеся данные по определенным критериям отбора. В перекрестных запросах, кроме обычных операций группировки выбранных данных, производится такое их расположение в таблице запроса, которое позволяет более компактно и наглядно отображать выбранную из БД информацию. Таблица перекрестного запроса выглядит примерно так же, как стандартная электронная таблица, где обычно все строки и столбцы имеют свои названия или номер, а на их пересечении размещается соответствующее выбранной ячейке значение.
Поэтому
в QBE-бланке
перекрестного запроса всегда имеются
3 поля: одно из них используется для
названия строк, второе –
для названия столбцов и третье –
для выбора
соответствующего значения, которое
должно размещаться на их пересечении.
Рис. 23. Окно создания перекрестного запроса
Рис.
24. Результат выполнения перекрестного
запроса
Например, пусть в таблице «Контракты» необходимо разгруппировать заключенные с клиентами контракты по типу товаров. Для организации такого запроса необходимо выбрать в QBE-область поля: «Клиент», «Товар», «Количество» и выполнить команду Запрос/Перекрестный, которая добавит в QBE-бланк строки Групповая операция и Перекрестная таблица (см. рис. 23). Затем в строке QBE-бланка Групповая операция для полей «Клиент» и «Товар» задать функцию Группировка, а для поля «Количество» – функцию Sum. В строке Перекрестная таблица задать для поля «Клиент» функцию Заголовки строк, для поля «Товар» – функцию Заголовки столбцов и для поля «Количество» – функцию Значение. В результате выполнения данного запроса должна появиться таблица вида, представленного на рис. 24.
Выполните созданный запрос и сохраните его под именем «Клиент-товар-количество».