
ЛР3 / Отчет 3
.docxЛабораторная работа №3
Создание и использование запросов
Цель работы: изучить основные средства СУБД Access, предназначенные для со здания и использования запросов, и получить практические навыки манипулирования данными с помощью этих средств.
Задание
1.а
Создание запросов “Отображение
содержимого "Мероприятие"”,
“Отображение содержимого "Клиент"”
и “Отображение содержимого
"ЗаявкаНаУчастие"”
Рис. 1 Запрос на вывод данных таблицы "ЗаявкаНаУчастие"
Рис. 2 Запрос на вывод данных таблицы "Клиент"
Рис. 3 Запрос на вывод данных таблицы "Мероприятие"
Задание
2.б
* Выборка по возрасту в таблице
Клиенты: вывод клиентов, рожденных от
1990 года и позже
Рис. 4 Запрос "Клиенты от 1990 года"
*
Мероприятия, проведенные в феврале 2025
года
Рис. 5 Запрос "Мероприятия февраля 2025 года"
* Отображение
бесплатных мероприятий (т.е. выборка
мероприятий из соответствующей таблицы,
у которых стоимость = 0)
Рис. 6 Запрос "Бесплатные мероприятия"
* Вывод самых дорогих мероприятий. Эту выборку делала с помощью режима SQL, поскольку попытки сделать условие =Max([Стоимость]) не удалось, поскольку нельзя использовать статические функции Поэтому запрос был следующий: SELECT *
FROM Мероприятие
WHERE (((Мероприятие.Стоимость)=(SELECT MAX([Стоимость]) FROM [Мероприятие])));
Результат
выполнения
Рис. 7 Результат выполнения запроса "Самые дорогие мероприятия"
*
Выбор мероприятий, стоимостью от 500 до
1000
Рис. 8 Запрос "Мероприятия стоимость от 500 до 1000"
* Выбор
предстоящих мероприятий. А также
сортировка по дате по возрастанию для
наглядности:
Рис. 9 Запрос "Предстоящие мероприятия"
*
Выборка клиентов, которые ходили на
мероприятия в феврале. Эта выборка
построена на запросе “Мероприятия
февраля 2025 года”, в затем с помощью
таблицы ЗаявкаНаУчастие выбираются
нужные ID клиентов, а потом выводятся
обязательные поля соответствующих
записей из таблицы Клиенты
Рис. 10 Запрос "Люди, участвовавшие в мероприятиях в феврале"
*
Популярность мероприятий. Т.е. для
каждого мероприятия считается, сколько
на него сходило людей. Количество людей
считается с помощью Count по таблице
ЗаявкаНаУчастие, а группировка идет
по полям из таблица Мероприятие:
Рис. 11 Запрос "Популярность мероприятий"
*
Количество мероприятий, посещенных
каждым клиентом. Данные о клиенте берутся
из таблицы Клиенты, затем с помощью
Count считается количество полей
КодМероприятия в таблице ЗаявкаНаУчастие
Рис. 12 Запрос "Количество мероприятий, посещенных каждым клиентом"
* Получение
всех заявок для конкретного клиента. В
таблице КодКлиента выбираются записи,
с указанным кодом клиента, затем с
помощью таблицы Мероприятие выводятся
данные в соответствии с id мероприятия
Рис. 13 Запрос "Получение всех заявок для конкретного клиента"
Задание
1.в
Ввод диапазона дат для запроса
"Мероприятия, стоимостью от 500 до
1000". Пользователь может сам задать
начальную дату и конечную, соответственно
отобразятся записи, где стоимость
мероприятий будет от 500 до 1000 и в указанном
промежутке
Рис. 14 Запрос с параметрами
Задание 1.г
Мероприятия,
которые предстоят + создание таблицы.
Вследствие этого будет создана таблица
ПредстоящиеМероприятия в текущей БД
Рис. 15 Запрос на создание таблицы ПредстоящиеМероприятия на основе одноименного запроса
Задание
1.д
Сводная таблица с ключевыми полями
из Клиента и ключевыми из Мероприятий.
Отображается в качестве строк
КодКлиента+Фамилия+Имя+Телефон. В
качестве столбцов - Названия мероприятий.
Итоговая таблица строится на основе
ЗаявкаНаУчастие. И на пересечении
ставится 1, если клиент ходил на это
мепроприятие
Рис. 16 Пример перекрестного запроса
Рис. 17 Результат выполнения запроса "Соответствие клиента и названия мероприятия"
Задание
1.е
* Запрос на обновление: увеличение
стоимости мероприятия, если до него
осталось <= 10 дней. Изменения производятся
в таблице ПредстоящиеМероприятия. Если
условие на дату: Between Дата() And Дата()+10; и
обновление стоимости [Стоимость]*1.1
Рис. 18 Пример запроса на обновления
Рис. 19 Данные в таблице ПредстоящиеМероприятия до обновления
Рис. 20 Данные в таблице ПредстоящиеМероприятия после обновления
* Добавление новой записи в таблицу ЗаявкаНаУчастие. Мне показалось этот запрос удобнее сделать с помощью SQL. Чтобы Access не делал выборку из таблицы (поскольку при добавлении он делает группу записей из таблиц-источников, а затем добавляет данные в целевую таблицу. Поскольку для этого запроса нет таблицы-источника (пользователь сам вводит КодКлиента и КодМероприятия), то нужно было просто использовать INSERT INTO, а затем SELECT, для ввода данных) INSERT INTO ЗаявкаНаУчастие ( КодКлиента, КодМероприятия )
SELECT
[Введите КодКлиента] AS Выражение1,
[Введите КодМероприятия] AS Выражение2;
Рис. 21 Данные в таблице ЗаявкаНаУчастие до добавления записи
Рис. 22 Данные в таблице ЗаявкаНаУчастие после добавления записи "3 и 6"
* Запрос на Удаление: из таблицы Клиент удаляется запись по его КодуКлиента. Это значение задается в конструкторе
Рис. 23 Пример запроса на удаление
Рис. 24 Данные в таблице Клиент до удаления записи
Рис. 25 Данные в таблице ЗаявкаНаУчастие послке удаления клиента с номером 39
Вывод: в ходе этой лабораторной работы было создано 19 запросов: 3 на вывод всей информации из таблиц, 10 на простую выборку, 1 на выборку с параметров, 1 на создание таблицы с результатами одного из запросов на выборку, 1 перекрестный запрос, 3 корректирующих: на удаление, на добавление и на обновление. Где-то запрос писался с помощью SQL, в других запросах использовался Мастер запросов. И узнала, что в WHERE нельзя использовать агрегатные функции