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.курс = 2) and not (Table2.факультет = "МТФ" or Table2.факультет = "ЭМФ" );
Рис. 3. Результат работы запроса №2. |
Подзапрос №3. Выборка фамилий всех студентов 4 и 5 курса факультета АВТФ и в возрасте больше, чем средний возраст студентов 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.возраст);
FROM obshaga!Table1 INNER JOIN obshaga!Table2 ;
ON Table1.id_fac = Table2.id_fac;
where (Table1.курс = 2 or Table1.курс = 4)and Table2.факультет = "АВТФ");
and (Table1.курс = 4 or Table1.курс = 5 ) and (Table2.факультет = "АВТФ" );
Рис. 4. Результат работы запроса №3. |
Подзапрос №4 (для защиты). Вывести студентов, имеющих учебник физики или алгебры, обучающихся у Иванова или Петрова, приехавших летом с 86 по 96 год и получающих стипендию больше, чем средняя стипендия студентов 1 и 4 курсов факультетов АВТФ и ФЛА, кроме студентов 2 и 5 курсов факультетов ФБ и ФТФ.
SELECT AVG(Table1.размер_стипендии) AS Средн_стипендия;
FROM obshaga!Table1;
INNER JOIN obshaga!Table2 ON Table1.id_fac = Table2.id_fac;
INNER JOIN obshaga!Table3 ON Table1.id_prepod = Table3.id_prepod;
WHERE (Table2.факультет = "АВТФ" OR Table2.факультет = "ФЛА");
AND (Table1.курс = 1 OR Table1.курс = 4);
ORDER BY Table1.фамилия
select Table1.фамилия,Table1.учебник,Table3.преподаватель, Table1.дата_приезда, Table1.размер_стипендии, Table2.факультет,Table1.курс;
FROM obshaga!Table1;
INNER JOIN obshaga!Table2 ON Table1.id_fac = Table2.id_fac;
INNER JOIN obshaga!Table3 ON Table1.id_prepod = Table3.id_prepod;
where (Table1.учебник = "физика" OR Table1.учебник = "алгебра");
AND (Table3.преподаватель="Иванов" OR Table3.преподаватель="Петров");
AND (MONTH(Table1.дата_приезда)>=06 AND MONTH(Table1.дата_приезда)<=08;
AND YEAR(Table1.дата_приезда)>=1986 AND YEAR(Table1.дата_приезда)<=1996);
AND NOT ((Table1.курс = 2 OR Table1.курс = 5) AND (Table2.факультет = "ФБ" OR Table2.факультет = "ФТФ"));
AND Table1.размер_стипендии > (SELECT AVG(Table1.размер_стипендии) AS Средн_стипендия;
FROM obshaga!Table1;
INNER JOIN obshaga!Table2 ON Table1.id_fac = Table2.id_fac;
INNER JOIN obshaga!Table3 ON Table1.id_prepod = Table3.id_prepod;
WHERE (Table2.факультет = "АВТФ" OR Table2.факультет = "ФЛА");
AND (Table1.курс = 1 OR Table1.курс = 4));
Рис. 5. Результат работы запроса №4. |
Приведем изображение формы, с помощью которой выполняются запросы:
Рис. 6. Форма с кнопками, выполняющими запросы. |
Выводы
В процессе выполнения работы я изучил средства быстрого поиска информации в базе данных, научился создавать многотабличные запросы и подзапросы, производить различные вычисления над полями, выбираемыми из таблиц, осуществлять группировку полей запроса. Были получены знания по SQL-запросам. Выполнение этой лабораторной работы позволит в дальнейшем быстро и качественно создавать подзапросы к базам данных в среде Visual FoxPro.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.