Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ЛР3 / Отчет 3

.docx
Скачиваний:
1
Добавлен:
12.06.2025
Размер:
646.25 Кб
Скачать

Лабораторная работа №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 нельзя использовать агрегатные функции

Соседние файлы в папке ЛР3