Конструирование запросов на выборку с условиями отбора

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

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

Далее в окне Добавление таблицы нужно выбрать таблицы, используемые в запросе.

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

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

Запрос ВыборДисципин позволяет выбрать дисциплины с общим числом изучения не более 100 и числом семестров изучения не более двух.

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

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

В строке Сортировка выбирается порядок сортировки записей результата (по возрастанию, по убыванию, отсутствует).

Рис. 4. Однотабличный запрос в режиме конструктора и в режиме

таблицы

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

В строке Условия отбора задаются условия отбора записей.

В строке или задаются альтернативные условия отбора записей.

Для отображения имен таблиц в строке бланка запроса выполняется команда Вид/Имена таблиц.

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

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

· литералы,

· константы,

· идентификаторы (ссылки).

Литералами являются конкретные значения, такие как:

­ числа, например 456;

­ текстовые строки, например «Информатика»;

­ даты, например #1.01.2003#.

Константами являются не изменяющиеся значения, которые определены в Access, например: «True», «False», «Да», «Нет», «Null».

Идентификатор представляет собой ссылку на поле, элемент управления или свойство. Ссылка на поле имеет вид: [Имя таблицы]![Имя поля].

Операторы сравнения и логические операторы определяют операцию над одним или несколькими операндами:

=, <, >, <=, >=, <>, Between, In, Like, And, Or, Not.

Если выражение в условии отбора не содержит оператора, то по умолчанию используется оператор =.

Допускается использование операторов шаблона * и?.

Оператор Between задает интервал для числового значения, например: Between 10 And 100.

Оператор In позволяет выполнить проверку на равенство любому значению из списка, например, In («Математика», «Информатика», «История»).

Оператор Like позволяет использовать образцы, использующие символы шаблона, при поиске в текстовых полях, например: Like «Иванов*».

Условия отбора, заданные в одной сроке, связываются по умолчанию с помощью логической операции «И», заданные в разных строках – с помощью логической операции «Или». Эти операции могут бать также заданы явно в выражении условия отбора с помощью операторов And и Or соответственно. Условия отбора можно сформировать с помощью Построителя выражений, если вызвать команду Построить в контекстном меню.

Для запроса ВыборДисциплин в режиме SQL будет отражена следующая строка:

SELECT Дисциплина.Дисциплина, Дисциплина.ВсегоЧасов, Дисциплина.ЧислоСеместров

FROM Дисциплина

WHERE ((Дисциплина.ВсегоЧасов)<=100) AND ((Дисциплина.ЧислоСеместров)<=2);

Многотабличный запрос Преподаватель-Занятия, позволяющий получить информацию о занятиях (дисциплина, дата, пара), проведенных преподавателями Барсуковым и Журавлевой, в бланке запросов, представлен на рис. 5.

Рис. 5. Многотабличный запрос в режиме конструктора и в режиме

таблицы

На языке SQL:

SELECT Преподаватель.Фамилия, Дисциплина.Дисциплина, Занятия.Дата, Занятия.Пара

FROM Преподаватель INNER JOIN (Дисциплина INNER JOIN Занятия ON Дисциплина.КодДисциплины = Занятия.КодДисциплины) ON Преподаватель.КодПреподавателя = Дисциплина.КодПреподавателя

WHERE ((Преподаватель.Фамилия)="Барсуков") OR ((Преподаватель.Фамилия) Like "Журавлев*"));


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: