Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пратиум по упрвлению баз данных.doc
Скачиваний:
8
Добавлен:
18.11.2018
Размер:
3.96 Mб
Скачать

9. Создание запросов

Конструирование запроса проводиться в 3 этапа:

1. Выбор полей, 2. Условия отбора нужных записей данных, 3. Сортировка записи БД.

Допустим, что нас интересует сколько абонентов позвонили в город Москву. Для решения этой задачи перейд`м к объекту "Запросы" и в режиме "Создание запросов с помощью мастера" создадим Запрос на выборку по таблице "Звонки". При этом сортировку результатов можно произвести, например, по полю, в котором представлены фамилии абонентов.

В окне "Создание простых запросов" (Рис. 29) выберем таблицу "Звонки", а из неё выберем поля: "Кто (код города)", "Кто номер", "Куда (код города)", "Кому (номер)", "Дата", "Продолжительность", нажмём кнопку "Далее".

Рис.29. Создание простых запросов.

Затем в следующем окне выберем вариант "Подробный отчёт", и перейдём по кнопке "Далее" в следующее окно. Зададим имя запроса, например, "Москва" и режим открытия запроса для просмотра данных, а затем нажмём кнопку "Готово".

В итоговой таблице запроса будут выведены все имеющиеся звонки. Необходимо выбрать только звонки в Москву. Для этого в режиме конструктора откроем запрос "Москва" . В поле "Куда (код города)" введём условие отбора, а именно, равенство коду города Москвы (495). Теперь для всех строк запроса это поле будет одинаковым. Чтобы не выводить его на экран, убирём соответствующую галочку.

Рис.30. Запрос "Москва". Конструктор.

В результате выполнения такого запроса получитсятаблица, представленная на рис. 31 .

Рис.31. Запрос "Москва".

В данном случае сортировка была осуществлена по поля "Дата".

Аналогичным образом можно создать запросы: "ИнфоГород" (Рис. 32) и "Город без абонентов" (Рис. 33) по таблице "Город", запрос "Переговоры абонентов" по таблицам "Телефон", "Звонки" и "Город" (Рис. 3, Рис. ).

Запрос "ИнфоГород" выдаёт информацию по городам, отсортированным по возрастанию (использованы все поля таблицы "Город", но в ином виде, удобном для пользователя).

Рис.32. Запрос "ИнфоГород".

Запрос "Город без абонентов" выдает информацию (код города и название) тех городов, в которых не проживает ни один из абонентов, имеющихся в нашей базе данных "Переговоры" (Рис. 33).

Рис.33. Запрос "Город без абонентов".

Запрос "Переговоры абонентов" выдаёт подробную информацию по телефонным переговорам всех абонентов. Какие поля были выбраны, из каких таблиц, в каком порядке, а так же установленные свойства можно узнать, обратившись к Рис. 34.

Рис.34. Запрос "Переговоры абонентов". Конструктор.

Сортировка ведётся по четырём полям "Фамилия", "Имя", "Отчество", "Дата" и именно в такой последовательности. (Рис. 35).

Рис.35. Запрос "Переговоры абонентов".

Создайте самостоятельно вспомогательный запрос "Переговоры Коэф" (по конструктивной схеме рис. 36), который будет использоваться для расчёта стоимости телефонных переговоров каждого абонента.

Рис.36. Запрос "Переговоры Коэф". Конструктор.

В результате запрос "Переговоры Коэф" должен выглядеть следующим образом (Рис. 37).

Рис.37. Запрос "Переговоры Коэф".

Создадим запрос "Переговоры Стоимость". Для этого используем не таблицу, как это делалось ранее, а запрос "Переговоры Коэф". Выберем все поля, но отобразим не все и в следующем порядке: "Фамилия", "Имя", "Отчество", "Дата", "Продолжительность" (звонка), "Город" (откуда звонит абонент), "Название города" (куда звонит абонент). Создадим два новых поля: "Стоимость мин" (минуты разговора) и "Итог" (сумма за звонок) - Рис. 38.

Рис.38. "Переговоры Стоимость". Конструктор.

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

Рис.39. Построитель выражений. Поле "Стоимость мин".

Вычислим стоимость всего разговора. Это стоимость минуты, умноженная на "Продолжительность" разговора (Рис. 40).

Рис.40. Построитель выражений. Поле "Итог".

Для полей "Стоимость мин" и "Итог" установим формат "Денежный" в "Свойствах поля". В итоге, запрос "Переговоры Стоимость" примет вид (Рис. 41).

Рис.41. Запрос "Переговоры Стоимость".