Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пособие_Base.doc
Скачиваний:
79
Добавлен:
11.05.2015
Размер:
1.09 Mб
Скачать

5.2. Примеры построения запросов

Рассмотрим ряд примеров, поясняющих технологию построения запросов.

Пример 1.Создать запрос, формирующий список студентов, фамилии которых начинаются на “C” и родившихся в 1991 – 1992 годах. В результате запроса вывести таблицу, содержащую поляФИО,Группа,Дата рождения. Условие отбора совпадает с условием поиска в фильтре по умолчанию для аналогичной задачи, рис. 21:ФИО=С* AND Дата рождения >= 01.01.1991 AND Дата рождения <= 31.12.1992. Сравнить задание условия отбора в запросе с условием поиска в фильтре по умолчанию.

1. В главном окне БД Сессияна вкладкеЗапросы выберите задачуСоздать запрос в режиме дизайна. Откроются окна построителя запросов и добавления таблиц, рис. 23.

2. В окне добавления таблицы выберите из списка таблицу Студенти нажмите кнопку «Добавить». Закройте окно добавления таблицы.

3. В таблице Студентдважды щелкните по следующим полям в указанной последовательности:ФИО,Группа,Дата рождения,Дата рождения.

4. Снимите в строке Видимыйфлажок для последнего поляДата рождения.

5. Введите в строке Критерийусловие отбора. Напомним, что апострофы и символы # подставляются автоматически при нажатии клавиши «Enter» или щелчке по другой ячейке. Результаты проделанных действий представлены на рис. 24.

Рис. 24. Запросная форма примера 1

6. Просмотрите запрос, нажав клавишу «F4», рис. 25.

Рис. 25. Просмотр результатов выполнения запроса

Повторное нажатие клавиши «F4» восстанавливает запросную форму для возможных ее исправлений. Проверьте.

7. Закройте окно построителя запросов и в появившемся окне сохранения запроса задайте ему имя Пример1для дальнейшего использования.

8. Если вы хотите убедиться, правильно ли расставлены в условии отбора логические операторы AND(“И”) илиOR(“ИЛИ”), перейдите в режимSQL. Для этого щелкните правой кнопкой мыши по значку запросаПример1и выберите в контекстном меню командуРедактировать в режиме SQL.Откроется окно построителя запросов с условием отбора на языкеSQL, рис. 26. Просмотрите условиеWHERE. Закройте окно построителя запросов.

Рис. 26. Условие отбора на языке SQL

9. Просмотреть запрос можно и из главного окна БД Сессия. Дважды щелкните по значку запросаПример1и просмотрите ответную таблицу. При изменении или добавлении записей в таблицеСтудентответная таблица также будет изменена. Закройте окноПредставление данных таблицы.

10. Щелкните правой кнопкой мыши по значку запроса Пример1и выберите в контекстном меню командуИзменить.Откроется окно построителя запросов, в котором можно произвести необходимые изменения.

Рассмотрим другой вариантзадания условия отбора для рассматриваемой задачи.

11. Удалите правый столбец Дата рождения, для чего выделите его щелчком по серому полю над заголовком и нажмите клавишу «Delete».

12. Введите новое условие отбора BETWEEN 01.01.1992 AND 31.12.1992. Результаты проделанных действий представлены на рис. 27.

13. Просмотрите запрос, нажав клавишу «F4». Результаты просмотра запроса совпадают с данными рис. 25.

Рис. 27. Новое условие отбора

14. Сохраните запрос под другим именем, для чего выполните команду Файл > Сохранить как и задайте запросу имяПример1_1.

15. Закройте окно построителя запросов.

16. Просмотрите условие WHEREв режимеSQL. Закройте окно построителя запросов.

Пример 2.Создать запрос, формирующий список студентов – мужчин, родившихся в 1990 г. или 1993 г. В результате запроса вывести таблицу, содержащую поляФИО,Пол,Дата рожденияи отсортированную по полюДата рождения(например, по возрастанию). Условие отбора: (Пол=М AND Дата рождения >= 01.01.1990 AND Дата рождения <= 31.12.1990) OR (Пол=М AND Дата рождения >= 01.01.1993 AND Дата рождения <= 31.12.1993).

1. В главном окне БД Сессияна вкладкеЗапросы выберите задачуСоздать запрос в режиме дизайна. Откроются окна построителя запросов и добавления таблиц, рис. 23.

2. В окне добавления таблицы выберите из списка таблицу Студенти нажмите кнопку «Добавить». Закройте окно добавления таблицы.

3. В таблице Студентдважды щелкните по следующим полям в указанной последовательности:ФИО,Пол,Дата рождения,Дата рождения.

4. Снимите в строке Видимыйфлажок для последнего поляДата рождения.

5. Для первого поля Дата рожденияустановите сортировкупо возрастанию. Для этого щелкните в ячейке на пересечении строкиСортировкаи столбцаДата рожденияи выберите в раскрывающемся списке сортировку по возрастанию.

6. Введите в строках КритерийиИЛИусловие отбора. Просмотрите запрос, нажав клавишу «F4» Результаты проделанных действий представлен на рис. 28.

7. Закройте окно построителя запросов и в появившемся окне сохранения запроса задайте ему имя Пример2.

8. Просмотрите условие WHEREв режимеSQL. Закройте окно построителя запросов.

Рис. 28. Условие отбора и результат запроса примера 2

Пример 3.Создать запрос, формирующий список студентов группы 112, получивших на экзамене неудовлетворительные оценки (балл < 53) по математике или информатике. В результате запроса вывести таблицу, содержащую поляФИО,Группа, Дисциплина,Балли отсортированную по полюФИО(по возрастанию). Условие отбора: (Группа=112 AND Математика < 53) OR (Группа=112 AND Информатика < 53).

1. В главном окне БД Сессияна вкладкеЗапросы выберите задачуСоздать запрос в режиме дизайна. Откроются окна построителя запросов и добавления таблиц, рис. 23.

2. Данный запрос строится на основе трех таблиц: Студент, Экзамен и Дисциплина. В окне добавления таблицы выбирайте последовательно из списка таблицыСтудент, Экзамен и Дисциплина,нажимая каждый раз кнопку «Добавить», рис. 29. Связи между таблицами берутся из схемы данных, созданной ранее, и устанавливаются автоматически. Закройте окно добавления таблицы.

3. Добавьте нужные поля в запросную форму: из таблицы Студент– поляФИОиГруппа, из таблицыДисциплина– полеДисциплина, из таблицыЭкзамен – полеБалл.

4. Для поля ФИОустановите сортировкупо возрастанию.

5. Введите в строках КритерийиИЛИусловие отбора. Результаты проделанных действий представлены на рис. 29.

Рис. 29. Запросная форма примера 3

6. Просмотрите запрос, нажав клавишу «F4» Результат выполнения запроса сравните с рис. 30.

Рис. 30. Результат запроса примера 3

7. Закройте окно построителя запросов и в появившемся окне сохранения запроса задайте ему имя Пример3.

Пример 4.Создайте запрос с параметрами, формирующий сведения о баллах студентов заданной группы по заданной дисциплине. В результате запроса вывести таблицу, содержащие поляФИО, Группа, Балл, Дисциплинаи отсортированную по полюБалл(по убыванию). Условие отбора:Номер группы AND Название дисциплины.

Запросы, которые представляют собой варианты базового запроса и незначительно отличаются друг от друга, называются параметрическими. Поля строк КритерийиИЛИ заполняются не конкретным условием отбора, а обращением к пользователю для ввода параметров условия отбора. Во время выполнения запроса это обращение будет адресовано пользователю, который введет параметры условия отбора. На основании введенных параметров (с учетом других компонент, заданных в строкахКритерийиИЛИ) будет осуществляться отбор записей. Обращение необходимо начинать с двоеточия, например:номер_группы.

1. В главном окне БД Сессияна вкладкеЗапросы выберите задачуСоздать запрос в режиме дизайна. Откроются окна построителя запросов и добавления таблиц, рис. 23.

2. Данный запрос строится на основе трех таблиц: Студент, Экзамен и Дисциплина. В окне добавления таблицы выбирайте последовательно из списка таблицыСтудент, Экзамен и Дисциплина,нажимая каждый раз кнопку «Добавить», рис. 31. Закройте окно добавления таблицы.

3. Добавьте нужные поля в запросную форму: из таблицы Студент– поляФИОиГруппа, из таблицыЭкзамен – полеБалл, из таблицыДисциплина– полеДисциплина.

4. Для поля Баллустановите сортировкупо убыванию.

5. Введите в строке Критерийдля поляГруппаобращение:номер_группы, а для поляДисциплина обращение:название_дисциплины. Результаты проделанных действий представлены на рис. 31.

Рис. 31. Запросная форма примера 4

6. Нажмите клавишу «F4» для просмотра запроса. Откроется окно для ввода параметров по запросу, рис. 32.

Рис. 32. Окно ввода параметров запроса

7. При выделенном параметре название_дисциплинывведите в полеЗначениетекстФизикаи нажмите кнопку «Следующий». Указатель параметра перейдет на строкуномер_группы.Активизируйтещелчком полеЗначениеи введите число 112. Нажмите кнопку «ОК». Результат выполнения запроса сравните с рис. 33.

Рис. 33. Результат запроса примера 4

8. Закройте окно построителя запросов и в появившемся окне сохранения запроса задайте ему имя Пример4.

9. В главном окне БД Сессиядважды щелкните по значку запросаПример4. В появившемся окнеВвод параметравведите название другой дисциплины и номер нужной группы. Просмотрите результат запроса. Закройте окноПредставление данных таблицы.

Задание 5. Создайте запрос по указанному преподавателем варианту.

1. Создайте запрос, формирующий список студентов заданной группы, получивших отличную оценку по заданной дисциплине.

2. Создайте запрос, формирующий список студентов заданной группы, получивших отличные оценки в сессию. Поля ФИОиДисциплина отсортировать по возрастанию.

3. Создайте запрос, формирующий список анкетных данных студентов, проживающих на улице Советская. Список отсортировать по возрастанию поля ФИО.

4. Создайте запрос, формирующий список анкетных данных студентов, не имеющих домашнего телефона.

5. Создайте запрос, формирующий список анкетных данных студентов заданной группы. Список отсортировать по возрастанию поля ФИО.

6. Создайте запрос, формирующий список анкетных данных студентов, фамилии которых начинаются на “С” или “П”.

7. Создайте запрос, формирующий список анкетных данных студентов, домашний телефон которых заканчивается на цифру 15.

8. Создайте запрос, формирующий список анкетных данных студентов, родившихся во втором квартале 1992 или 1993 годах.

9. Создайте запрос, формирующий список анкетных данных студентов - мужчин, фамилии которых не начинаются на “С”. Список отсортировать по возрастанию поля ФИО.

10. Создайте запрос, формирующий список студентов заданной группы, получивших хорошие и отличные оценки в сессию. Поля ФИОиДисциплина отсортировать по возрастанию.