Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ИСЮД_5_Создание запросов.doc
Скачиваний:
29
Добавлен:
16.08.2019
Размер:
17.13 Mб
Скачать

Лабораторная работа №5 создание запросов в субд access

1. Запросы. Виды запросов

Формирование таблиц и заполнение их данными – основной этап в создании баз данных. Это необходимый и достаточный процесс с точки зрения хранения данных, но недостаточный с точки зрения доступа и использования информации.

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

Таким образом, запросы используются для просмотра, анализа и изменения данных в одной или нескольких таблицах. Запросы могут служить источником данных для форм и отчетов MS Access 2010. САМ ЗАПРОС НЕ СОДЕРЖИТ ДАННЫХ, это только команда, позволяющая выбирать данные из таблиц (или других запросов) и выполнять над нами операции. Можно выделить несколько видов запросов (рис.1).

Полотно 142

Рисунок 1. Виды запросов

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

ЗПрямая соединительная линия 113 апросы можно создать следующими способами:

Полотно 112

Рисунок 2. Способы создания запросов

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

контекстная вкладка Создание → в группе Запросы выбираем Конструктор запросов1 или Мастер запросов

2.1 Запросы на выборку

  • Простые запросы на выборку

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

Виды критериев отбора в простых запросах на выборку:

Таблица 1

Оператор / Условие отбора

Формулировка запроса

Пример окна запроса

Логический оператор

ИЛИ

По каким делам проходят машины HONDA или NISSAN?

ИЛИ

Продолжение таблицы 1

Оператор / Условие отбора

Формулировка запроса

Пример окна запроса

Логический оператор

И

Узнайте номера дел, заведенных по наезду на пешеходов в Железнодорожном районе?

Поиск образцов согласно шаблона1

Узнайте номера дел, заведенных по ДТП совершенных на улице Ленина.

Продолжение таблицы 1

Оператор / Условие отбора

Формулировка запроса

Пример окна запроса

Операторы сравнения «>» (« »), «<» (« ») и оператор Between1 для случаев, когда необходимо задать диапазон

Узнайте, по каким делам ранено более 3 и менее 10 человек.

Полотно 105 SHAPE \* MERGEFORMAT Прямоугольник 18

ИЛИ

Узнайте, по каким делам ранено менее 3 и более 10 человек.

Полотно 99

ИЛИ

Продолжение таблицы 1

Оператор / Условие отбора

Формулировка запроса

Пример окна запроса

Дата и время1

Узнайте номера дел, заведенных по ДТП совершенных 31 декабря 2008.

В MS Access используется ряд других функций, которые помогут задать условия отбора для даты и времени (см. табл.4).

  • Запросы с параметром

Е сли нас интересует информация по каждому административному округу, касающаяся ведения дел по совершенным ДТП, не всегда удобно постоянно прописывать в поле «Условие отбора» необходимый административный округ.

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

Запрос с параметром – это запрос, при выполнении отображающий в собственном диалоговом окне приглашение ввести данные.

Пример.

Узнать какими делами занимается некий административный округ.

Для создания запроса с параметром необходимо в условии отбора ввести подсказку (т.е. текст, который будет всякий раз появляться с диалоговым окном в момент его запуска) помещенную в квадратные скобки [] (рис.3, 4).

Рисунок 3. Пример запроса с параметром в режиме Конструктора

Рисунок 4. Пример выполненного запроса

Используя возможности запроса с параметром можно по другому посмотреть на простые запросы с критериями отбора из таблицы 1 (см. табл.2).

Таблица 2

Оператор / Условие отбора

Формулировка запроса

Пример окна запроса

Логический оператор

ИЛИ

По каким делам проходят одна или другая марка машины?

ИЛИ

Продолжение таблицы 2

Оператор / Условие отбора

Формулировка запроса

Пример окна запроса

Логический оператор

И

Узнайте номера дел, заведенных по тому или иному виду ДТП в некотором районе.

Продолжение таблицы 2

Оператор / Условие отбора

Формулировка запроса

Пример окна запроса

Операторы сравнения «>» (« »), «<» (« ») и оператор Between для случаев, когда необходимо задать диапазон

Узнайте, по каким делам ранено более одного числа и менее другого числа человек.

Полотно 91 SHAPE \* MERGEFORMAT

ИЛИ

Продолжение таблицы 2

Оператор / Условие отбора

Формулировка запроса

Пример окна запроса

Узнайте, по каким делам ранено менее одного числа и более другого (больше предыдущего) числа человек.

Полотно 85

ИЛИ

  • Итоговые запросы

Пример.

В каждом административном округе ГИБДД имеется большое количество дел, нас интересует, сколько именно.

В рамках простых запросов на выборку и запросов с параметром не найти ответа, но может помочь ответить на этот вопрос итоговый запрос.

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

Итоговые запросы значительно отличаются от предыдущих запросов. В них поля делятся на 2 типа:

Полотно 79

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

в режиме Конструктора запросов добавляем нужные поля → на контекстной вкладке Работа с запросами в группе Показать или скрыть выбираем

В результате получим следующее1:

Основные групповые функции, которыми можно воспользоваться при создании итогового запроса.

Таблица 3. Основные групповые функции

Функция

Назначение

SUM

вычисляет сумму всех значений заданного поля (для числовых или денежных полей), отобранных запросом

AVG

вычисляет среднее значение в тех записях определенного поля, которые отобраны запросом (для числовых или денежных полей)

MIN

выбирает минимальное значение в записях определенного поля, отобранных запросом

MAX

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

COUNT

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

FIRST

определяет первое значение в указанном поле записей

LAST

определяет последнее значение в указанном поле записей

Полотно 73

  • Перекрестный запрос

В рамках итогового запроса можно ответить на вопрос: «Сколько дел в отделах ГИБДД в каждом административном округе», но не можем узнать информацию о том, какие дела ведутся и по каким видам ДТП.

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

Создание перекрестного запроса:

На вкладке Создание в группе Запросы выбираем Перекрестный запрос → выбираем таблицу или запрос, поля, которых необходимо ввести в перекрестный запрос →выбираем поля, значения которые будут использованы в качестве заголовков строк, в нашем случае «НомерДела» → → выбираем поля для использования их значений в качестве заголовков столбцов, в нашем случае «НомерОкруг» → → выбираем функцию, которой необходимо воспользоваться над значениями каждой ячейки, находящейся на пересечении строк или столбцов, в нашем случае «Первый»; ставим флажок напротив поля ставить или нет итогового значения по каждой строке, в нашем случае убираем флажок

В результате получим следующее:

Благодаря созданному перекрестному запросу можно увидеть, какие именно дела и по каким видам ДТП курируют соответственные отделы ГИБДД, но вместо наименование отделов используются их номера, это не удобно, поскольку всегда следует помнить информацию, какой номер соответствует какому отделу.

Для того, чтобы вместо номеров были наименования административных округов необходимо либо переименовать поля в режиме SQL, либо изменить в режиме Конструктора запросов:

Полотно 60

  • Запросы в вычисляемыми полями

Рассмотрим такую ситуацию, необходимо узнать каково общее количество пострадавших в ДТП по каждому делу.

Известно, что в нашей БД имеется таблица «Общие сведения о ведении дела по ДТП», в которой есть поля «ЧислоРан» и «ЧислоПогиб», таким образом, чтобы получить общее количество пострадавших нужно соответственные значения из этих полей просуммировать, но возникает вопрос куда эти значения поместить.

Для этого необходимо ввести еще одно поле «Общее число пострадавших», а это можно сделать при помощи запроса с вычисляемым полем, с помощью которого введем НОВОЕ ВЫЧИСЛЯЕМОЕ ПОЛЕ.

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

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

в пустом поле вводим новое имя поля, например, «Общее число пострадавших» ставим знак «:» →на контекстной вкладке Работа с запросами в группе Настройка запроса нажимаем кнопку → в окне «Построитель выражений» строим необходимое выражение

: [Общие сведения о ведении дела по ДТП]!ЧислоРан+[Общие сведения о ведении дела по ДТП]!ЧислоПогиб, т.е.

В результате получим следующее1:

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

Таблица 4. Некоторые встроенные функции из категории ДАТА / ВРЕМЯ

Функция

Описание

Пример

Результат

Day(дата)

возвращает значение дня месяца в диапазоне от 1 до 31

День: Day([Участники ДТП]![ДатаРождения])

Month(дата)

возвращает значение месяца года в диапазоне от 1 до 12

Месяц: Month([Участники ДТП]![ДатаРождения])

MonthName(число), где число от 1 до 12

возвращает название месяц

Месяц: MonthName(Month([Участники ДТП]![ДатаРождения]))

Year(дата)

возвращает значение года в диапазоне от 100 до 9999

Год: Year ( [Участники ДТП]![ДатаРождения] )

Date()

возвращает значения сегодняшней даты

Date()

сегодняшняя дата

Now()

возвращает значении сегодняшней даты и текущего времени

Now()

сегодняшняя дата и текущее время