Министерство образования и науки Российской Федерации
Федеральное агентство по образованию
Государственное образовательное учреждение
Высшего профессионального образования
Новосибирский государственный технический университет
Кафедра вычислительной техники
по дисциплине “Базы данных”
“Создание подзапросов ”
Группа: АМ-411
Выполнил: Вагизов А.Р.
Вариант: 4
Преподаватель: Трошина Г.В.
I. Цель работы
Изучить средства быстрого поиска информации в базе данных и получение ответов на разнообразные запросы в среде FoxPro. Изучение конструктора запросов FoxPro. Научиться создавать запросы любого уровня сложности, производить различные вычисления над полями, выбираемыми из таблиц, осуществлять группировку полей запроса.
II. Задание
Выполнить выбор записей по диапазону значений для БД. Осуществить выборку из нескольких таблиц. Продемонстрировать приобретённые навыки построения многотабличных запросов. Одна таблица (минимально) должна содержать поля: факультет, идентификатор факультета в обязательном порядке, другая (минимально) – курс идентификатор факультета в обязательном порядке.
Выполнить запросы:
1). Вывод авторов учебников со стоимостью от 20 до 100 рублей и в возрасте больше, чем средний возраст студентов 1 и 3 курса.
2). Вывод фамилий студентов, кроме обучающихся на первом курсе всех факультетов и в возрасте больше, чем средний возраст студентов 1 и 3 курса.
3). Выборка фамилий всех студентов 2 и 3 курса факультета ПМТ и в возрасте больше, чем средний возраст студентов 1 и 3 курса.
4). Вывести студентов, имеющих книги издательства «Наука» или «Сибирь», выпущенных с 1985 по 1995 год, обучающихся в аудиториях с 301 по 320 и получающих стипендию больше, чем средняя стипендия студентов, обучающихся у лекторов Иванова и Петрова, кроме студентов 2 и 5 курса факультетов АВТФ и ФЛА.
III. Результаты работы
Для выполнения данной работы создадим проект с 2 таблицами (рис.1):
Рис.1 Структура БД
Рис.2 Запросы к БД
Подзапрос №1: Вывод авторов учебников со стоимостью от 20 до 100 рублей и в возрасте больше, чем средний возраст студентов 1 и 3 курса.
Текст SQL- запроса:
SELECT (AVG(YEAR(DATE()) - YEAR(Knigi2.дата_рождения))) as "Средний_Возраст" ;
FROM data1!knigi2 INNER JOIN data1!fakultet_table ;
ON Knigi2.id_fakultet = fakultet_table.id_fakultet;
WHERE Knigi2.курс IN ("1","3");
SELECT Knigi2.автор , (YEAR(DATE()) - YEAR(knigi2.дата_рождения)) as "Возраст_владельца";
FROM data1!knigi2 INNER JOIN data1!fakultet_table ;
ON Knigi2.id_fakultet = fakultet_table.id_fakultet;
WHERE (YEAR(DATE()) - YEAR(knigi2.дата_рождения)) > (SELECT (AVG(YEAR(DATE()) - YEAR(Knigi2.дата_рождения)));
FROM data1!knigi2 INNER JOIN data1!fakultet_table ;
ON Knigi2.id_fakultet = fakultet_table.id_fakultet;
WHERE Knigi2.курс IN ("1","3"));
AND Knigi2.стоимость BETWEEN 20 AND 100
Результат запроса:
Рис.3 Вывод среднего возраста
Рис.4 Подзапрос №1
Подзапрос №2: Вывод фамилий студентов, кроме обучающихся на первом курсе всех факультетов и в возрасте больше, чем средний возраст студентов 1 и 3 курса.
SELECT (AVG(YEAR(DATE()) - YEAR(Knigi2.дата_рождения))) as "Средний_Возраст" ;
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.