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.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.