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

Для просмотра, изменения и анализа данных используются запросы. Запросы также можно использовать в качестве источников записей для форм, отчетов и страниц доступа к данным. В общем случае запрос - это вопрос о данных. В Microsoft Access есть несколько типов запросов (на выборку, запрос с параметрами, перекрестные запросы, запрос на изменение таблицы, запросы SQL).

В спроектированной нами таблице Учащиеся содержится вся информация, необходимая для решения поставленной нами задачи. Но как этой информацией пользоваться? Как узнать, например, сколько человек учится в 4А классе или у скольких учащихся день рождения в апреле? Не сидеть же перед компьютером с калькулятором, ручкой и бумагой! Решить эту проблему поможет запрос.

Запрос-выборка в MS Access. Простейший из запросов — запрос-выборка — это производная таблица, которая содержит те же структурные элементы, что и обычная таблица (столбцы-поля и строки), и формируется на основе фактических данных базы данных. Запрос на выборку отбирает данные из одной или более таблиц по заданным условиям, а затем отображает их в нужном порядке. Запрос можно создать с помощью мастера или самостоятельно, в режиме конструктора, выбрав таблицы или запросы, содержащие нужные данные, и заполнив бланк запроса.

При создании макета запроса (т. е. производной таблицы) в общем случае нам необходимо выполнить следующие базовые операции:

· указать системе, какие поля и из каких таблиц мы хотим включить в запрос;

· описать вычисляемые поля, т.е. поля, значения которых являются функциями значений существующих полей (например, средняя успеваемость - это среднее арифметическое значение всех оценок);

· описать групповые операции над записями исходных таблиц (например, нужно ли объединить группу записей и указать условие отбора (мальчики из 5Б класса) в одну и просуммировать значение их роста для расчета среднего значения роста учащихся класса).

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

Создание запроса-выборки. В общем случае для создания произвольного запроса используется универсальный язык SQL (Structured Query Language — Структурный язык запросов). В предложении этого языка (Select - Выбрать) можно описать все базовые операции: какие поля и откуда выбрать, какие вычислить, как их сгруппировать (просуммировать, пересчитать, найти среднее и т.п.) и при каких условиях включить записи в выборку. Однако в реальности пользоваться этим языком могут только специалисты (или очень грамотные пользователи), а для обычных людей разработчики придумали упрощенный механизм создания запроса, называемый QBE (Query By Example – запрос по образцу). Вам предлагают бланк QBE - некую модель, заготовку запроса, и на этом бланке, пользуясь определенными правилами, вы сообщаете системе о своих планах: помечаете поля, вводите выражения, значения и т.п. На основе заполненного вами бланка система сама создает соответствующее предложение Select и сама выполняет его.

Рассмотрим создание простого запроса на выборку с помощью мастера. Мастер простого запроса на выборку создает запросы для получения данных из полей, выбранных в одной или нескольких таблицах или запросах. С помощью мастера можно также вычислять суммы, количества и средние значения для всех записей или определенных групп записей, а также находить максимальное и минимальное значение в поле. Однако нельзя ограничить количество записей, возвращаемых этим запросом, с помощью условий отбора.

Для создания запроса выберите в окне базы данных Группа вкладку Запросы в списке Объекты и нажмите кнопку «Создать на панели инструментов». В диалоговом окне Новый запрос выберите мастер Простой запрос и нажмите кнопку «ОК».

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

Рис. 17. Выбор полей таблицы для формирования запроса

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

Следуя инструкциям Мастера, выберите вариант Подробный отчет и щелкните кнопку «Далее». В последнем диалоговом окне задайте имя запроса Запрос1 и запустите полученный запрос, выбрав вариант Открыть запрос для просмотра данных и щелкнув кнопку «Готово».

Выбрав команду Режим SQL в меню Вид, мы можем увидеть текст созданного запроса на языке SQL:

SELECT [Учащиеся].[Фамилия], [Учащиеся].[Имя], [Учащиеся]. [Отчество], [Учащиеся].[Дата рождения], [Учащиеся].[Пол], [Учащиеся].[Домашний адрес], [Учащиеся].[Класс] FROM Учащиеся;

Как видно из текста, в запросе на языке SQL записана команда выбора из таблицы Учащиеся и описан порядок размещения полей таблицы в таблице-результате действия запроса.

Примечание. Для получения подробной справки о создании запроса вызовите справочную систему Access и на вкладке Содержание изучите справочную информацию в разделе Работа с запросами, тема Создание запроса.

Если получился не тот запрос, который был нужен, можно снова запустить мастер или изменить этот запрос в режиме конструктора. Для изменения запроса в режиме конструктора, открыв окно запроса, щелкните кнопку «Конструктор» на панели инструментов базы данных. После этого откроется окно Конструктор запроса, показанное на рис. 18.

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

В верхней части этого окна показана схема данных выбранных таблиц с указанием связей и имен всех полей, в данном случае - таблица Учащиеся. В нижней части окна размещается бланк QBE, который представляет собой макет некоей таблицы. Столбцы этой таблицы соответствуют полям создаваемого запроса, а число строк переменно и зависит от состояния флажков «Имена таблиц» и «Групповую операции» (на панели инструментов или в пункте Вид). В строке Поле: указываются имена столбцов (полей) создаваемого запроса. Существующее имя можно выбрать из раскрывающегося списка (щелкнув мышью на поле) или просто перенести в ячейку Поле: методом «Drag-and-Drop» из таблицы Учащиеся в верхней части окна запроса. В первом столбце разместите поле Фамилия, во втором - Имя и т.д. В ячейке Имя таблицы: (она появляется в бланке, если установлен флажок «Имена таблиц») отображается имя таблицы, которая содержит выбранное поле (таблица Учащиеся).

Если бы в строке Поле: размещалось вычисляемое поле, тогда в ячейке этой строки нужно было бы ввести формулу: <Имя поля>: <Выражение>

Например: Стоимость: [Количество]* [Цена]

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

Если бы мы собирались проводить в запросе групповые операции (т.е. объединять записи в группы), нужно было бы включить флажок «Групповые операции» - появляется строка Групповая операция: После щелчка на любом поле этой строки появится список типов групповых операций: Группировка, Sum, Avg, Count, Выражение и др. Например, если в качестве типа групповой операции в столбце указать Count (Сосчитать), то мы получим количество записей, соответствующих запросу в этой группе.

В строках Условие отбора: и или: можно указать условные или логические выражения, которые позволят нам отобрать для запроса только записи, удовлетворяющие заданному условию. Обратите внимание на следующие соглашения, предусмотренные в Access.

1. Условные выражения, набранные в разных столбцах строки Условие отбора: по умолчанию соединяются между собой знаком AND. Например, если соседние столбцы имеют имена Пол и Класс и вы набрали в них =Тrue и =5Б, то тем самым вы сформулировали логическое выражение: Пол =True и Класс =5Б.

2. Условные выражения, набранные в соседних строках одного итого же столбца, соединяются между собой знаком OR. Например, если столбец имеет имя Класс и мы набрали в строке Условие отбора: =4А, а в строке или: =5А, то тем самым мы сформулировали логическое выражение: [Класс]= 4А OR [Класс]= 5А.

Измените запрос, добавив условие отбора только тех учащихся, которые не имеют мужской пол. Для этого, установив курсор в столбце Пол на строке Условие отбора и щелкнув правую кнопку мыши, откройте контекстное меню и выберите в нем команду Построить. В списке папок построителя выражений, щелкнув на папке Запрос1, раскройте список полей. Дважды щелкнув поле Пол, включите это поле в область выражений, затем, щелкнув оператор «=», включите его в выражение. Выбрав папку Константы, в списке констант дважды щелкните на значении «Ложь», как показано на рис.19.

Рис. 19. Создание логического выражения в окне Построитель выражений

Щелкнув кнопку «ОК», завершите построение логического выражения.

Выбрав в меню Вид команду Режим SQL, можно просмотреть запись созданного запроса на языке SQL: