Однотабличные запросы на выборку данных

Упражнение 13. Создание запроса на выборку с логическими операциями в условии отбора
Упражнение 14. Использование в условии отбора выражений с именами полей
Упражнение 15. Конструирование запроса с функцией Count
Упражнение 16. Запрос с функцией Avg
Упражнение 17. Запрос с несколькими статистическими функциями
Упражнение 18. Задание условий отбора в запросах с групповыми операциями

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


Конструирование однотабличного запроса на выборку

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

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

Упражнение 13. Создание запроса на выборку с логическими операциями
в условии отбора

Рассмотрим процесс конструирования однотабличного запроса на выборку на примере получения информации из таблицы ПРЕДМЕТ.

Пусть надо выбрать предметы, на изучение которых отводится не более 100 часов, кроме того, есть лекции, а также выбрать предметы, по которым занятия занимают больше 150 часов и число семестров изучения не более двух. Результат должен содержать наименование предмета (НП), общее число часов по предмету (ЧАСЫ), количество лекционных часов (ЛЕК) и число семестров (ЧС).

1. Для создания запроса в окне базы данных выберите объект Запрос и нажмите кнопку Создать. Можно также на панели инструментов нажать кнопку Новый объект и в открывшем списке выбрать Запрос.

Рис.6.1.
Окно выбора таблиц и запросов для схемы данных запроса

2. В окне Новый запрос выберите Конструктор и нажмите кнопку ОК. Появляется диалоговое окно Добавление таблицы (рис. 6.1) в окне запроса на выборку в режиме конструктора <Имя запроса>: запрос на выборку (рис.6.2).

Рис.6.2.
Окно конструктора запроса на выборку с логическими операциями в условии отбора

3. Если начать создание запроса, щелкнув на строке Создание запроса в режиме конструктора в окне списка запросов, сразу появится окно запроса и окно добавления таблицы.

4. В диалоговом окне выберите таблицу ПРЕДМЕТ и нажмите кнопку Добавить. Выбранная таблица будет отображена в области схемы данных запроса. Закройте окно Добавление таблицы.

5. Для удаления любой таблицы из схемы данных запроса установите на нее курсор и нажмите клавишу , а для добавления— кнопку Отобразить таблицу на панели инструментов конструктора запросов или выполните команду меню Запрос | Добавить таблицу.

6. В окне конструктора (см. рис.6.2) перетащите из списка полей таблицы ПРЕДМЕТ поля НП, ЧАСЫ, ЛЕК и ЧС в столбцы бланка запроса в строку Поле.

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

8. В строке Вывод на экран отметьте поля, иначе они не будут включены в таблицу запроса.

Сформулированные в задаче условия требуют формирования следующего логического выражения: (ЧАСЫ<=100 AND ЛЕК<>О) OR (ЧАСЫ>150 AND ЧС<3)

9. Запишите условия из первых скобок в соответствующих полях ЧАСЫ и ЛЕК первой строки Условия отбора. Между условиями в разных полях одной строки выполняется логическая операция AND. Условия из вторых скобок запишите в соответствующих полях ЧАСЫ и ЧС второй строки Условия отбора. Между условиями, записанными в разных строках, выполняется логическая операция OR.

10. Выполните запрос, нажав на панели конструктора запросов кнопку Запуск или кнопку Вид. На экране появится окно запроса в режиме таблицы с записями из таблицы ПРЕДМЕТ, отвечающими заданным условиям отбора.

11. Сохраните запрос, нажав кнопку Сохранить и задав ему имя Пример 1.

12. Закройте текущий запрос по команде меню Файл | Закрыть или, нажав кнопку окна запроса Закрыть.

13. Выполните сохраненный запрос, выделив запрос в окне базы данных и нажав кнопку Открыть.


Назад

Упражнение 14. Использование в условии отбора выражений с именами полей

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

Пусть необходимо проверить правильность задания общих часов в таблице ПРЕДМЕТ. По запросу должны отбираться только те записи, в которых значение в поле ЧАСЫ не равно значению, получаемому при сложении значений полей ПР и ЛЕК.

1. Повторите пункты 1—3 предыдущего упражнения.

2. В окне конструктора (рис. 6.3) перетащите из списка полей таблицы ПРЕДМЕТ поля НП, ЧАСЫ, ЛЕК и ПР в столбцы бланка запроса в строку Поле.

3. Запишите в бланке запроса в столбце ЧАСЫ условие <>[ЛЕК]+[ПР], как показано в бланке запроса на рис. 6.3.

Рис.6.3.
Окно запроса на выборку из таблицы ПРЕДМЕТ записей, в которых количество часов не равно сумме часов лекций и практики

4. Выполните запрос. В таблице запроса будут отражены только те зиписи из таблицы ПРЕДМЕТ, в которых значение поля ЧАСЫ равно <>[ЛЕК]+[ПР].


Групповые операции в запросах

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

Sum — сумма значений некоторого поля для группы;

Avg — среднее от всех значений поля в группе;

Max,Min — максимальное, минимальное значение поля в группе;

Count — число значений поля в группе без учета пустых значений;

StDev — среднеквадратичное отклонение от среднего значения поля в группе;

Var — дисперсия значений поля в группе;

First и Last — значение поля из первой или последней записи в группе.

Внимание

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

Рассмотрим технологию конструирования однотабличного запроса с групповой операцией на примере таблицы СТУДЕНТ.

Назад


Упражнение 15. Конструирование запроса с функцией Count

Определим фактическое число студентов в группе

1.Создайте в режиме конструктора запрос на выборку для таблицы СТУДЕНТ

2.Из списка таблицы СТУДЕНТ перетащите в бланк запроса поле НГ - номер группы. По этому полю будет производиться группировка.

3. Перетащите в бланк запроса поле НС, по которому будет вычисляться функция Count для подсчета числа студентов в группе.

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

5.Замените слово Группировка в столбце НС на Count. Для этого вызовите список и выберите эту функцию. Бланк запроса примет вид показанный на рис.6.4.

Рис.6.4.
Запрос с групповой операцией подсчета числа студентов в группе

Результат запроса показан на рис.6.5.

Рис.6.5.
Результат подсчета числа студентов в группе

6. Замените подпись поля Count_HC на Фактическое число студентов. Для ввода этой подписи в бланке запроса установите курсор мыши на поле НС и нажмите правую кнопку. В контекстно-зависимом меню выберите Свойства. В строке Подпись наберите Фактическое число студентов.

Таблица результата после доработки запроса показана на рис. 6.6.

Рис.6.6.
Таблица результата с измененной подписью поля

7. Сохраните запрос на выборку под именем Число студентов в группах.

Назад


Упражнение 16. Запрос с функцией Avg

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

1. Сформируйте запрос на выборку для таблицы СТУДЕНТ с функцией Avg для поля ПБАЛЛ — проходной балл студента. В бланке запроса заполните поля, как показано на рис. 6.7.

Рис.6.7.
Запрос с групповой операцией подсчета среднего значения

2. Для ограничения точности результата двумя знаками выберите в окне Свойства поля в строке Формат поляФиксированный.

Результат выполнения запроса представлен на рис. 6.8.

Рис.6.8.
Результат подсчета среднего значения

3. Сохраните этот запрос под именем Средний проходной балл группы.

Назад


Упражнение 17. Запрос с несколькими статистическими функциями

Выполните расчет числа студентов и среднего проходного балла в группе в одном запросе. Это возможно, так как группы записей в обоих случаях формируются одинаково (рис. 6.9). Сохраните этот запрос под именем Число студентов и средний ПБАЛЛ группы.

Рис.6.9.
Запрос с одновременным использованием двух групповых операций

Назад


Упражнение 18. Задание условий отбора в запросах с групповыми операциями

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

Подсчитайте в каждой из групп число студентов, получивших балл больше 4,5.

1. Для этого в запрос Число студентов и средний ПБАЛЛ группы вторично включите поле ПБАЛЛ.

2. В строке Групповая операция этого поля замените слово Группировка словом Условие, выбрав его из списка.

3.Теперь введите в строку Условие отбора значение >4,5 (рис.6.10.)

Рис.6.10.
Запрос с групповыми операциями и полем, введеным для определения условий отбора записей из таблицы СТУДЕНТ

Заметим, что средний балл в этом запросе также считается только среди студентов, имеющих ПБАЛЛ больше 4,5.

Внимание

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


Назад