Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СУБД Практикум (Н.Л. КЕЛЛЕР, О.Ю. ЛИТКОВИЧ).docx
Скачиваний:
5
Добавлен:
01.03.2025
Размер:
2.02 Mб
Скачать

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

При разработке приложений для работы с базами данных наиболее часто решаемая разработчиками программа-это получение по некоторому запросу из базы данных и отображение на экране определенного множества значений. Иногда это множество полностью соответствует содержимому какой-либо таблицы, но чаще это — часть таблицы или объединение записей нескольких таблиц, переданное в приложение в результате выполнения запроса, будем называть набором данных.

Запросы используются для просмотра, анализа и изменения данных в одной или нескольких таблицах. Например, можно использовать запрос для отображения данных из одной или нескольких таблиц и отсортировать их в определенном порядке, выполнить вычисления над группой записей, осуществить выборку из таблицы по определенным условиям. Запросы могут служить источником данных для форм и отчетов Microsoft Access. Сам запрос не содержит данных, но позволяет выбирать данные из таблиц и выполнять над ними ряд операций. На конкретном примере рассмотрим запросы на выборку, как наиболее часто применяемых типов запросов.

Пример 12: Создать три запроса к базе данных, созданной в примерах 8-11:

  1. Номер договора, Наименование клиента, ФИО обслуживающего агента, сумма договора. Сортировка по номеру договора в порядке возрастания. Вывести информацию для указанного пользователем агента.

  2. ФИО обслуживающего агента, Количество договоров, Общая сумма всех договоров. Вывести информацию только для указанного пользователем офиса.

  3. Фамилия_Агента, Количество договоров, Общая сумма всех договоров по каждому клиенту.

Создание простого запроса с помощью Мастера запросов

Создадим простой запрос с помощью Мастера запросов, для запроса:

  1. Номер договора, Наименование клиента, ФИО обслуживающего агента, сумма договора. Сортировка по номеру договора в порядке возрастания. Вывести информацию для указанного пользователем агента.

  • В окне базы данных на панели объектов выбрать ярлык Запросы.

  • В списке запросов дважды щелкнуть левой кнопкой мыши на ярлыке Создание запроса с помощью мастера или нажать на кнопку Создать в окне базы данных и в появившемся диалоговом окне Новый запрос выбрать Простой запрос и нажать на кнопку ОК.

  • В появившемся окне Создание простых запросов в поле со списком Таблицы и запросы выбрать таблицу, которая будет служить источником данных для создаваемого запроса - Договор

  • С помощью стрелок вправо и влево переместить из списка Доступные поля в список Выбранные поля те поля, которые необходимы в конструируемом запросе - Номер договора, Наименование клиента, ФИО обслуживающего агента, сумма договора. При этом порядок полей в запросе будет соответствовать порядку полей в списке Выбранные поля. Если нужно включить в запрос все поля, можно воспользоваться кнопкой с двумя стрелками вправо.

  • Нажать кнопку Далее.

  • Следующее диалоговое окно будет последним. В нем нужно ввести имя создаваемого запроса в поле Задайте имя запроса (Запрос_а) и выбрать дальнейшие действия: Открыть запрос для просмотра данных или Изменить макет запроса.

  • При необходимости можно установить флажок Вывести справку по работе с запросом? для вывода справочной информации по работе с запросами.

По окончании работы Мастера простых запросов в зависимости от выбора способа дальнейшей работы с запросом откроется или окно запроса в режиме просмотра, или окно Конструктора запросов, в котором можно модифицировать запрос.

По заданию примера необходимо произвести: сортировку по номеру договора в порядке возрастания и вывести информацию для указанного пользователем агента, поэтому воспользуемся флажком Изменить макет запроса для перехода в режим Конструктора

  • Нажать на кнопку Готово.

В результате мастером будет создан запрос в соответствии с выбранными параметрами.

Изменение запроса с помощью Конструктора запросов

Чтобы установить порядок сортировки записей в запросе, используйте строку Сортировка. Для каждого поля, по которому должны сортироваться записи, выберите из списка соответствующий порядок сортировки: по возрастанию или по убыванию. По умолчанию во всех полях запроса устанавливается значение (отсутствует).

В поле №Договора в строке Сортировка установите порядок сортировки по возрастанию, выбирая из предложенного списка.

Применение условия отбора записей

В строке Условие отбора и в строке или указываются условия отбора записей. Такими условиями могут быть логические выражения. Например, (>30), (='Иванов'), (=10) и т. п.

В поле Фамилия_Агента в строке Условие отбора укажите условие отбора – (=’Иванов’) для возможности отбора записей по заданию - Вывести информацию для указанного пользователем агента - Иванов.

Для выполнения запроса из режима Конструктора достаточно просто переключиться в Режим таблицы с помощью кнопки Вид на панели инструментов или с помощью команды Режим таблицы из меню Вид.

Создание запроса с помощью Конструктора запросов

Создадим запрос с помощью Конструктора запросов, для запроса:

  1. ФИО обслуживающего агента, Количество договоров, Общая сумма всех договоров. Вывести информацию только для указанного пользователем офиса.

Для этого необходимо:

  • В окне базы данных на панели объектов выбрать ярлык Запросы.

  • В списке запросов выбрать ярлык Создание запроса в режиме конструктора или нажать кнопку Создать, в появившемся окне Новый запрос выбрать Конструктор и нажать на кнопку ОК.

  • В окне Добавление таблицы выбрать таблицы Клиенты, нажать кнопку Добавить, Агенты, нажать кнопку Добавить и Договор, нажать кнопку Добавить.

Для удобства выбора таблиц и запросов в окне существуют следующие вкладки: Таблицы, на которой отображается список таблиц; Запросы, на которой отображается список запросов; Таблицы и запросы, на которой отображается список таблиц и запросов вместе.

  • После добавления таблиц нажать кнопку Закрыть в окне Добавление таблицы. Выбранные таблицы оказываются помещенными на верхней панели окна Конструктора запросов.

Если таблицы связаны между собой, т. е. связи присутствуют явно на схеме данных, то эти связи также отображаются. Если связи на схеме данных не установлены, то Конструктор запросов автоматически устанавливает связи между таблицами, если они содержат поля, которые имеют одинаковые имена и согласованные типы

  • Затем указать, какие поля из базовых таблиц будут отображаться в запросе. Включать в запрос можно поля из любой таблицы. Выбираем поля ФамилияАгента и Сумма Договора (из таблицы Договор), поле Номер_офисаАгента (из таблицы Агенты) и НаименованиеКлиента (из таблицы Клиенты).

Способов включения полей в запрос существует несколько:

  • Выделите нужное поле в таблице-источнике (можно выделить несколько полей, пользуясь клавишами <Shift> и <Ctrl>). Если требуется включить в запрос все поля базовой таблицы, выделите поле, обозначенное звездочкой (*). Дважды щелкните левой кнопкой мыши на выделенном поле. При этом в бланке запроса появится столбец, соответствующий выбранному полю. Затем аналогично добавьте другие поля. Столбцы в бланке запроса при этом заполняются слева направо.

  • Можно подвести указатель мыши к выделенному полю (одному из выделенных полей), нажать на левую кнопку мыши и перетащить поле (поля) в нужное место бланка запроса (указатель мыши при этом должен принять вид трех прямоугольников). Последний способ позволяет помещать поля в любое место бланка запроса.

  • И наконец, вместо перетаскивания полей в бланк запроса из таблицы можно просто использовать раскрывающийся список полей в строке Поле бланка запроса

Создание вычисляемого поля

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

  • сумму значений поля,

  • среднее,

  • число значений в поле,

  • минимальное значение,

  • максимальное значение,

  • среднеквадратичное отклонение или дисперсию.

Для каждого вычисляемого поля следует выбрать одно выражение.

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

По заданию нам необходимо найти количество договоров и общую сумму всех контрактов агента.

Для этого необходимо выполнить:

  • выведите строку Групповая операция командой Групповые операции меню Вид;

  • в поле НаименованиеКлиента в строке Групповая операция выберите функцию Count (число значений в поле) из предлагаемого списка;

  • в поле Сумма договора в строке Групповая операция выберите функцию Sum (сумма значений поля) из предлагаемого списка

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

  1. Чтобы определить параметр запроса, в строке Условие отбора для столбца Номер_офисаАгента укажите условие отбора и заключите их в квадратные скобки, [введите № офиса]. Эта фраза будет выдаваться в виде приглашения в диалоговом окне при выполнении запроса.

  2. Если вы хотите, чтобы Access проверяла данные, вводимые в качестве параметра запроса, нужно указать тип данных для этого параметра. Обычно в этом нет необходимости при работе с текстовыми полями, т.к. по умолчанию параметру присваивается тип данных Текстовый. Если же данные в поле запроса представляют собой даты или числа, рекомендуется тип данных для параметра определять. Для этого щелкните правой кнопкой мыши на свободном поле в верхней части запроса и выберите из контекстного меню команду Параметры или выполните команду меню Запрос, Параметры. Появляется диалоговое окно Параметры запроса.

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

  2. Нажмите кнопку Запуск на панели инструментов, чтобы выполнить запрос. При выполнении запроса появляется диалоговое окно Введите значение параметра, в которое нужно ввести значение. В результат выполнения запроса попадают только те договора, которые заключены агентом из данного офиса.

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

Примечание: При использовании запроса с параметрами делайте понятными их имена, т.к. именно они будут выводиться в диалоговом окне для пользователя.

Для выполнения запроса из режима Конструктора переключитесь в Режим таблицы с помощью кнопки Вид на панели инструментов или с помощью команды Режим таблицы из меню Вид.

Создание перекрестного запроса с помощью Мастера запросов

В перекрестном запросе отображаются результаты статистических расчетов (такие как суммы, количество записей и средние значения), выполненных по данным из одного поля таблицы. Эти результаты группируются по двум наборам данных, один из которых расположен в левом столбце таблицы, а второй - в верхней строке.

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

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

Создадим перекрестный запрос с помощью Мастера запросов, для запроса на основе ранее сделанного Запрос_а:

  1. Фамилия_Агента, Количество договоров, Общая сумма всех договоров по каждому клиенту.

Для этого необходимо выполнить:

  1. В диалоговом окне базы данных нажмите на кнопку «Запросы».

  2. Нажмите на кнопку «Создать». На экране появится диалоговое окно «Новый запрос».

  3. В диалоговом окне «Новый запрос» выберите в списке пункт «Перекрестный запрос» и нажмите на кнопку «OK». На экране появится диалоговое окно «Создание перекрестных таблиц».

  1. В диалоговом окне «Создание перекрестных таблиц»

Выберите в списке имя таблицы, на основе которой будет построен перекрестный запрос. Поскольку в нашем случае эта таблица - запрос (Запрос_а), нужно установить во включенное состояние кнопку выбора «Запросы», а затем выбрать в списке запрос Запрос_а. Для перехода к следующему этапу нажмите на кнопку «Далее >». После этого будет открыто следующее диалоговое окно «Создание перекрестных таблиц».

  1. В данном диалоговом окне в списке «Доступные поля» выберите поле, уникальные значения которого будут отождествляться со строками перекрестного запроса (т.е. что пойдет по вертикали). В нашем случае это поле Фамилия_Агента. Названия строк перекрестного запроса можно составить из нескольких полей. При этом значения будут не сцеплены как строки, а размещены в параллельных столбцах. Выделите в списке «Доступные поля» имя поля Фамилия_Агента. Затем нажмите на кнопку «>». После этого имя поля Фамилия_Агента будет добавлен в список «Выбранные поля». Обратите внимание на иллюстрацию в нижней части диалогового окна. Нажмите на кнопку «Далее >».

  1. В следующем диалоговом окне «Создание перекрестных таблиц». Выберите поле, значения которого будут отождествляться со столбцами перекрестного запроса (что пойдет по горизонтали). В нашем случае это поле НаименованиеКлиента. Нажмите на кнопку «Далее >».

  1. Теперь в очередном диалоговом окне «Создание перекрестных таблиц» нужно выбрать, значения какого поля и каким образом будут образовывать значения в ячейках на пересечении строк и столбцов перекрестного запроса. В списке «Поля» выберите поле Сумма договора, а в списке «Функции» - функцию Сумма. Обратите внимание на переключатель в левой части диалогового окна. Если он установлен во включенное состояние, для каждой строки будет рассчитано итоговое значение. Итоговые значения размещаются в отдельном столбце. Установите этот переключатель во включенное состояние, если он выключен. Нажмите на кнопку «Далее >».

  1. В очередном и на этот раз последнем диалоговом окне «Создание перекрестных таблиц» наберите в поле название запроса - Запрос_а_перекрестный.

Установите во включенное состояние кнопку выбора «Просмотреть результаты запроса» (иначе запрос сначала откроется в режиме конструктора). Нажмите на кнопку «Готово».

  1. Итак, мы получили перекрестный запрос. Дальше его можно перенести в Microsoft Excel и построить по нему графики и диаграммы, иллюстрирующие динамику и структуру продаж.

Задание для самостоятельной работы

Создать для базы данных (БД) рассмотренной в главе Нормализация (Товар-Накладная) запрос, содержащий информацию: Имя заказчика, телефон и расчетный счет, отсортированную по имени заказчика.