Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Эл2_БД.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
1.56 Mб
Скачать

2.5.6. Запросы

Запрос является объектом базы данных OOo Base и создается при работе с этой программой. Запрос сохраняется в источнике данных и может быть применен многократно при изменении данных в исходных таблицах. При использовании базы в качестве источника данных с запросами можно работать так же, как и с таблицами.

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

Существуют различные типы запросов.

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

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

Перекрёстный запрос. Перекрёстные запросы предназначены для группирования данных и представления их в компактном виде. Позволяют представить большой объем данных в виде, удобном для восприятия, анализа, сравнения. Могут использоваться в качестве базового при со­здании отчёта. Отчёты позволяют выбирать из базы данных нужную информацию, оформить её в виде документа и распечатать. Источником данных может быть таблица, запрос или несколько взаимосвязанных таблиц.

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

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

Таблица 3.Операторы, применяемые при формировании запросов

Математические

Отношения

Логические

Строковые

Вспомогательные

*

=

AND

&

Between ... and

/

<>

OR

LIKE

In

+

>

NOT

Is NULL

-

<

Для связывания значений нескольких полей оператором AND, следует размещать экземпляр данных в одной строке. Для использования оператора OR между двумя полями, следует размещать экземпляр данных в одной строке.

Запросы по одной таблице

Необходимо узнать № зачетной книжки, фамилию, дату рождения и вид оплаты студентов, обучающихся в 216 группе. Для создания запроса в OpenOffice.org Base выберем режим в левом окне «Запросы», а в правом окне «Создать запрос в режиме SQL». В появившемся диалоговом окне выберем следующие пункты меню «Вид» → «вкл./выкл. вид дизайна». Затем необходимо добавить нужные таблицы в запрос одним из способов: «Вставка» → «Добавить таблицу» или нажать F7. На экране появится окно для добавления таблиц (рис.20).

Рис.20. Выбор таблиц для построения запроса

Для построения запроса выбираем таблицу spisok и нажимаем кнопку «Добавить», после чего «Закрыть» диалог выбора таблиц.

Вид запроса в Конструкторе показан на рис.21. Все дополнительные значки («#» и «'») ставятся автоматически. Следует напомнить, что условия, находящиеся в одной строке, связываются логической функцией «И» (выполняются одновременно), а условия в разных строках означают выполнение логической функции «ИЛИ». Поля в запрос можно включать как невидимые, т. е. они участвуют в запросе, но не отображаются в результатах.

Рис.21. Запрос в Конструкторе запросов

После нажатия на кнопку «Выполнить запрос» или F5 или «Правка» → «Выполнить запрос» в Конструкторе запросов результаты появятся в верхней части окна. При необходимости в результатах запроса можно изменить формат столбца и шрифт отображения. Кроме того, к результатам запроса можно применять сортировку и фильтры. Сохраним запрос с именем Запрос1.

Запрос по нескольким полям (рис.22): выберем студентов гр. 111, родившихся в 1994 году, обучающихся платно, и всех студентов гр. 112.

Сохраним этот запрос под именем Запрос2.

Рис.22. Запрос по нескольким полям

Вывести список всех студентов, фамилия которых начинается на «С». Получившийся запрос сохраним с именем «Запрос3» (рис.23).

Рис.23. Результаты работы «Запроса3»

Результаты запросов 1 и 2 также могут быть скопированы как отчеты в электронную таблицу или в текстовый документ.

Запросы с вводимым параметром

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

Чтобы создать запрос с переменными параметрами, необходимо поместить переменную в квадратные скобки (=[x]). Кроме того, можно использовать знак равенства и двоеточие (=:x). При выполнении запроса программа открывает диалоговое окно для ввода выражения, которому будет присвоена переменная x.

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

Запросы параметров с местозаполнителями (*, _) или специальными символами (например, ?) недопустимы.

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

Диалоговое окно Ввод параметра служит для ввода переменных, определенных в запросе. Введите значение для каждой переменной запроса и подтвердите ввод, нажав кнопку ОК.

Создадим запрос: «Необходимо узнать № зачетной книжки, фамилию, дату рождения, обучающихся в 216 группе». Оплата за обучение будет являться вводимым параметром. Запрос сохраним с под именем «Запрос4». Реализация данного запроса представлена на рис.24.

Рис.24. Реализация запроса с вводимым параметром

Запросы по нескольким таблицам

Организация связей позволяет выбирать информацию из нескольких таблиц одновременно. Создадим новый запрос в режиме дизайна и добавим в него четыре таблицы (spisok, groups, special,facultet), выводя информацию о фамилии студента, номере группы и курсе на котором он обучается. Никаких критериев выбора в запросе нет. Сохраним запрос с именем Запрос5.

Следующий Запрос6 построим в соответствии с рис.25.

Рис.25. Запрос из четырех таблиц

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

Запрос в БД можно организовать таким образом, что данные будут выбираться не из взаимосвязанных таблиц. Например, необходимо получить список студентов, обучающихся на определенном факультете. В таком случае в конструкцию запроса все равно будет вынесена вся цепь таблиц, на основе которой происходит связь указанных выше spisok и fakultet. Иначе результат запроса будет неверен. Т. о., в наш запрос необходимо включить три таблицы: spisok, groups, facultet. Сохраним запрос с именем Запрос7 (рис.26).

Рис.26. Запрос из трех таблиц

Выполним запрос из четырех таблиц с некоторыми условиями. Сформируем ведомость сдачи студентами экзаменов и зачетов. На экран выведем: Название сдаваемой дисциплины, преподавателя, ФИО студента. вид аттестации и оценки выше 61 балла. Причем отсортируем поля vid и bal по убыванию. Сохраним запрос под именем «Запрос8». Пример реализации данного запроса приведен на рис.27.

Рис.27. Запрос по нескольким таблицам с условием отбора

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

Теперь сформируем запрос (рис.28): сколько заплатили в общей сложности студенты в каждой группе? Для этого суммируем значения s_price для каждой из групп для платных студентов (для группировки по категориям используется функция Group). Функции выбираются из раскрывающегося списка соответствующей строки таблицы Конструктора запросов. В этом запросе для имен полей использованы псевдонимы. Именно они будут отображены в результате работы запроса. Сохраним запрос как Запрос9.

Рис.28. Запрос с псевдонимами и функциями

Выведем максимальные оценки по предметам, полученные студентами во время сессии (рис.29). Сохраним запрос под именем Запрос10.

Рис.29. Пример запроса с функциями

Здесь были рассмотрены только запросы на выбор информации. Однако возможны и запросы-действия (преобразование данных, модификация значений и пр.). В OOo Base такие запросы выполняются в режиме SQL-запросов.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]