Лабораторная работа: Базы данных на логическоми и функциональном программировании
3. В первом свободном столбце введите имя столбца «Срок обучения:», а затем выражение:
Year(Date()) – [YearEnter]
Если не ввести имя поля и двоеточие, то вычисляемому полю будет присвоено имя «Выражение1». Бланк запроса примет вид:
Поле : | SGroup | FIOS | Срок обучения: Year(Date())-[YearEnter] |
Имя таблицы : | Student | Student | |
Сортировка: | По возрастан | ||
Вывод на экран: | Ú | Ú | |
Условие отбора: | Forms![Спи | ||
или: |
4. Вызовите форму на выполнение.
Занятие 5. Создание простых запросов (продолжение)
Создайте следующие запросы и формы для их вызова (возможно размещение нескольких запросов на одной форме):
1. Составить список групп для заданного факультета, в которых более 20 студентов.
2. Составить список групп для заданного факультета и курса, в которых заданное количество студентов (число студентов должно задаваться в диапазоне).
3. Определить список предметов, принимавшихся заданным преподавателем.
4. Создать список ведомостей по экзаменам, принимавшимся в весеннем семестре
5. Создать список групп, сдававших экзамены заданному преподавателю в конкретном месяце.
6. Составить список преподавателей, принимавших экзамены в период с заданного момента времени по текущий момент времени.
7. Составить список студентов, получивших неудовлетворительные оценки или не аттестованных по какому-либо предмету.
Занятие 6 . Построение многотабличных запросов
QBE позволяет осуществлять запросы, использующие информацию из нескольких связанных между собой таблиц. Перед созданием такого запроса необходимо четко представлять, какие поля связаны общими значениями. В режиме запроса по образцу выводятся четыре типа соединений:
1. Внутреннее соединение (или эквисоединение ) обычно используют при создании запросов на выборку. Результирующее множество запроса содержит записи одной таблицы, имеющие совпадающие значения в связанных полях другой (WHEREполе1 = поле2 ). В большинстве случаев соединения основываются на уникальном значении поля первичного ключа в одной таблице и значении поля внешнего ключа в другой таблице, если таблицы связаны отношением «один – ко – многим». Если в таблице «многие» записи с заданной величиной отсутствуют, то соответствующие записи таблицы «один» в результирующее множество не включаются. Access автоматически создает соединение между таблицами, если в них имеются поля с одинаковыми именами, одно из которых является ключевым, либо если соединение было задано в окне связей.
2. Внешнее соединение используется для создания новой таблицы, которая содержит записи, исключая повторяющиеся, связанные поля которых одинаковы. Внешнее соединение позволяет вывести данные одной из таблиц независимо от того, имеются ли соответствующие записи в другой таблице.
3. Рекурсивное соединение связывает данные в одной таблице. Создание этого типа соединения выполняется путем добавления в запрос копии таблицы и связывания полей идентичных таблиц.
4. Соединение по отношению (или тета-соединение ) связывает данные некоторым отношением. Это может быть любое отношение, исключая равенство.
Построим запрос: «На каких курсах и в каких группах преподается дисциплина Базы данных ». Для этого выполним следующие действия:
1. Создайте в режиме «Конструктора» новый запрос. С помощью окна «Добавление таблиц» включите в окно запроса таблицы Group, Vedom и Predmet. Обратите внимание, что между таблицами будут установлены связи.
2. В первый свободный столбец бланка запроса включите поле Predm из таблицы Predmet. Установите в этом столбце Условие отбора равное “Базы данных”. Сбросьте флажок Вывод на экран.
3. Во второй столбец включите поле SGroup из таблицы Vedom, а в третий – Curs из таблицы Group. Выполните запрос.
Использование в запросах условий Like , In , Between .
Like определяет шаблон, которому должно соответствовать искомое строковое выражение. Наиболее часто используются символы шаблона *, замещающий любое число знаков, и ? - замещающий один символ.
Inопределяет, является ли строковое выражение элементом списка значений.
Between определяет, находится ли значение поля в определенном диапазоне.
Реализуем запрос «Выдать список студентов, либо не аттестованных, либо получивших неудовлетворительную оценку по математическим дисциплинам, поступившим в институт в период с 1999 по 2001 год». Будем предполагать, что название математических дисциплин содержит в той или иной форме производные от слова «математика». Для построения данного запроса в конструкторе необходимо добавить таблицы Ball, Student, Predmet, Ekzamen и Vedom. Бланк запроса должен иметь следующий вид:
Поле : | Ocen | FIOS | Predm | YearEnter |
Имя таблицы : | Ball | Student | Predmet | Student |
Сортировка: | ||||
Вывод на экран: | Ú | Ú | Ú | Ú |
Условие отбора: | In (“неуд”, “неат”) | Like “Математ*” | Between 1999 And 2001 | |
или: | Like “*математ*” |
Построить следующие запросы:
1. Определить предметы, сдававшиеся в осеннем семестре.