//минимальное число кораблей участников от одной страны f=thisform.spinner1.value //запрос числа кораблей, участвовавших в каждой битве от каждой страны select battle_id, ships.страна, count(ship_id) as "count"; from links inner join ships; on links.ship_id=ships.id; group by battle_id,ships.страна into cursor mycursor1 //выбор битвы, которая не удовлетворяет условию select battle_id from mycursor1; where count<f into cursor mycursor2 //окончательный запрос select distinct battles.name; from links inner join battles; on links.battle_id=battles.id; where battle_id not in (select battle_id from mycursor2) |
6. Найти названия сражений, в которых принимали участие корабли заданного класса (выбор класса).
select name as "Сражения" from battles where battles.id in ; (select battle_id from links right join ships; on ship_id=ships.id; where ships.class_id=ship_types.type_id and ; ship_types.type=thisform.combo3.value) |
7. Найти для каждого класса корабля значение даты спуска на воду первого корабля этого класса.
select Min(Дата_спуска) as "Дата_спуска"; from ships,ship_types; where ships.class_id=ship_types.type_id; AND ship_types.type=thisform.combo4.value |
8. Найти для каждого класса количество кораблей этого класса, потопленных в сражениях.
select Count(Название) as "Число_потопленных" from ships where id in ; (select ship_id; from links right join ships; on ship_id=ships.id; where ships.class_id=ship_types.type_id; AND ship_types.type=thisform.combo5.value and status_id=2) |
9. Найти для каждого класса, насчитывающего не менее трех судов(выбор количества судов), количество кораблей этого класса, потопленных в сражениях.
//выбор для каждого класса судов количества судов в классе select ships.class_id, count(ships.название) as "count"; from ships; group by ships.class_id into cursor mycursor1 SELECT Ship_types.type, count(ships.название) as “Количесво_потопленных”; FROM sea_wave!ship_types INNER JOIN sea_wave!ships; INNER JOIN sea_wave!links ; ON Ships.id = Links.ship_id ; ON Ship_types.type_id = Ships.class_id; WHERE Links.status_id = 2; AND class_id in (select class_id from mycursor1; where count =>thisform.spinner6.value); GROUP BY Ship_types.type |
10. Найти информацию о количестве орудий и водоизмещении всех линкоров (выбор) заданной страны (выбор или ввод), построенных до 1930 года (выбор или ввод даты).
select название,число_орудий,водоизмещение ; from ships inner join ship_types; on ships.class_id=ship_types.type_id; where ship_types.type=thisform.combo7.value ; AND ships.страна=thisform.combo8.value ; AND year(ships.дата_спуска)<thisform.spinner2.value ; where count =>thisform.spinner6.value); GROUP BY Ship_types.type |
11. Найти названия сражений, в которых были потоплены суда не менее двух стран.
//для каждой битвы формируем список стран, корабли которых были потоплены select links.battle_id, ships.страна; from links inner join ships; on links.ship_id = ships.id; where links.status_id = 2; group by battle_id, ships.страна into cursor mycursor1 //подсчитываем для каждой битвы количество стран select battle_id, count(battle_id) as "count" from mycursor1; group by battle_id into cursor mycursor2 //выбираем битвы, в которых были потоплены суда не менее двух стран select battles.name from battles; where id in (select battle_id from mycursor2 where count>1) |
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.