Министерство Образования и Науки Российской Федерации
Федеральное агентство по образованию
Государственное образовательное учреждение
высшего профессионального образования
Новосибирский государственный технический университет
Кафедра ВТ
Лабораторная работа №6
Создание подзапросов
Факультет: АВТ
Группа: АМ-411
Студент: Храмцов А.О.
Преподаватель: Трошина Г.В.
Вариант: 9
Новосибирск, 2007 г.
Цель работы
Изучить средства быстрого поиска информации в базе данных и получение ответов на разнообразные запросы в среде FoxPro. Изучение конструктора запросов FoxPro. Научиться создавать подзапросы любого уровня сложности, производить различные вычисления над полями, выбираемыми из таблиц, осуществлять группировку полей запроса.
Задание
Выполнить выбор записей по диапазону значений для заданной БД. Осуществить выборку для нескольких таблиц. Продемонстрировать приобретенные навыки построения многотабличных запросов. Одна таблица (минимально) должна содержать поля: факультет, идентификатор факультета в обязательном порядке, другая (минимально) – курс, идентификатор факультета в обязательном порядке.
Выполнить запросы: вывод фамилий всех студентов, получающих стипендию от 100 до 300 рублей, кроме обучающихся на 1 и 3 курсе факультетов МТФ, ЭМФ и в возрасте больше, чем средний возраст студентов 2 и 4 курса факультета АВТФ; вывод фамилий всех студентов, кроме обучающихся на 2 курсе факультетов ЭМФ, МТФ и в возрасте больше, чем средний возраст студентов 2 и 4 курса факультета АВТФ; выборка фамилий всех студентов 4 и 5 курса факультета АВТФ и в возрасте больше, чем средний возраст студентов 2 и 4 курса факультета АВТФ.
Результаты работы
Для выполнения текущей лабораторной работы создадим вторую таблицу с полями: факультет и идентификатор факультета.
Рис. 1. Структура базы данных |
Для создания запроса можно использовать конструктор запроса, но он подходит для создания простых запросов, более сложные запросы лучше прописывать самому. Приведем тексты запросов и результаты их работы.
Подзапрос №1. Вывод фамилий всех студентов, получающих стипендию от 100 до 300 рублей, кроме обучающихся на 1 и 3 курсе факультетов МТФ, ЭМФ и в возрасте больше, чем средний возраст студентов 2 и 4 курса факультета АВТФ;
SELECT AVG(Table1.возраст) AS Средн_возр;
FROM obshaga!Table1 INNER JOIN obshaga!Table2 ;
ON Table1.id_fac = Table2.id_fac;
where (Table1.курс = 2 or Table1.курс = 4)and Table2.факультет = "АВТФ";
select Table1.фамилия, Table1.размер_стипендии, Table2.факультет,Table1.курс,Table1.возраст;
FROM obshaga!Table1 INNER JOIN obshaga!Table2 ;
ON Table1.id_fac = Table2.id_fac;
where Table1.размер_стипендии > 100 AND Table1.размер_стипендии < 300;
AND (Table1.возраст) >(SELECT AVG(Table1.возраст);
FROM obshaga!Table1 INNER JOIN obshaga!Table2 ;
ON Table1.id_fac = Table2.id_fac;
where (Table1.курс = 2 or Table1.курс = 4)and Table2.факультет = "АВТФ");
and not (Table1.курс = 1 or Table1.курс = 3 ) and not (Table2.факультет = "МТФ" or Table2.факультет = "ЭМФ" );
Рис. 2. Результат работы запроса №1. |
Подзапрос №2. Вывод фамилий всех студентов, кроме обучающихся на 2 курсе факультетов ЭМФ, МТФ и в возрасте больше, чем средний возраст студентов 2 и 4 курса факультета АВТФ;
SELECT AVG(Table1.возраст) AS Средн_возр;
FROM obshaga!Table1 INNER JOIN obshaga!Table2 ;
ON Table1.id_fac = Table2.id_fac;
where (Table1.курс = 2 or Table1.курс = 4)and Table2.факультет = "АВТФ";
select Table1.фамилия, Table1.размер_стипендии, Table2.факультет,Table1.курс,Table1.возраст;
FROM obshaga!Table1 INNER JOIN obshaga!Table2 ;
ON Table1.id_fac = Table2.id_fac;
where (Table1.возраст) >(SELECT AVG(Table1.возраст);
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.