Создание подзапросов. Средства быстрого поиска информации в базе данных и получение ответов на разнообразные запросы в среде FoxPro, страница 2

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.