Формирование нескольких баз данных, основная из которых - «Морская волна», страница 4

        ships, battles_ships, classess;

where ;

        battles_ships.ship_id=ships.id ;

        and battles_ships.damage == "убит";

        and ships.class_id = classess.id ;

        and ships.class_id in ;

        (;

                select ships.class_id from ships ;

                group by ships.class_id ;

                having count(ships.class_id)>=3 ;

        );

group by classess.name ;

10.  найти информацию о количестве орудий и водоизмещении всех линкоров (выбор) заданной страны (выбор или ввод), построенных до 1930 года (выбор или ввод даты).

 

select  ships.name, ships.volume, ships.calibr;

from ;

      ships, countries, classess ;

where ;

      ships.class_id=classess.id and ships.country_id = countries.id ;

      and classess.name=ThisForm.Combo1.value ;

      and countries.name = ThisForm.Combo2.value ;

      and year(ships.dateof) <= ThisForm.Spinner1.value ;

11.  найти названия сражений, в которых были потоплены суда не менее двух стран.

select  battles.place, count(ships.country_id) as страны ;

from ;

        ships, battles_ships, battles, countries ;

where ;

        battles_ships.ship_id=ships.id ;

        and battles_ships.battle_id = battles.id ;

        and countries.id = ships.country_id;

        and battles_ships.damage == "убит" ;

group by battles.place ;

having count(ships.country_id)=>2 ;

12.  сформировать список названий судов водоизмещением ниже 30тыс. тонн (ввод числа), упорядоченный по возростанию значения года спуска судов на воду, а для судов-одногодков – в алфавитном поряде следования их названий.

                                                                            

select  name as название_корабля, volume, year(dateof) yearof;

from ;

        ships ;

where ;

        volume<=ThisForm.Text1.value;

order by yearof ASC, name ASC

13.  для каждой группы значений калибра главных орудий найти минимальное значение года выпуска судов, относящихся к этой группе.

select calibr, MIN(year(dateof)) ;

from ;

        ships ;

group by calibr

14.  найти для каждого класса, по меньшей мере одно из судов которого было спущено на воду до 1930 года,  количество кораблей этого класса, потопленных в морских сражениях.

                                                                

select  classess.name as название_класса, count(ships.id) as потери;

from ;

        ships, battles_ships, classess;

where ;

        battles_ships.ship_id=ships.id ;

        and battles_ships.damage == "убит";

        and ships.class_id = classess.id ;

        and ships.class_id in ( ;

                select class_id from ships where year(dateof) <= ThisForm.Spinner1.value;

        ) group by classess.name ;

15.  найти сражения, в каждом из которых принимал участие по меньшей мере один корабль заданной страны (ввод названия страны) и было потоплено не менее двух кораблей.

                                                             

select distinct battles.place as сражение ;

from ;

        battles, battles_ships, countries, ships ;

where ;

        battles_ships.battle_id=battles.id ;

        and battles_ships.ship_id= ships.id ;

        and ships.country_id = countries.id ;

        and countries.name=ThisForm.Text1.value ;

        and battles_ships.battle_id in ;

        ( ;

                select battle_id ;

                from ;

                        battles_ships ;

                where ;

                        damage=="убит" ;

                group by battle_id ;

                having count(ship_id)>=2 ;

        ) order by battles.place DESC


Пример работы программы

                                                                                        




Выводы

В ходе выполнения расчетно-графической работы были закреплены (и  приобретены  новые) навыки работы в среде Microsoft Visual FoxPro 6. Получен опыт в рациональном проектировании и реализации баз данных, работы используя язык SQL, а также опыт в разработке средств управления базами данных.

Получен опыт работы с элементами управления, меню, использовании стандартных средств для работы с данными MS Visual FoxPro.


Литература

1.  Электронный учебник "Программирование в среде Visual FoxPro™". С.Федоров, НГТУ, АВТФ, 2003г.

2.  MSDN Library & Technical Resources. http://msdn.micosoft.com

3.  Справка Microsoft Visual FoxPro6.