Здравствуйте!
Есть вот такая задача
Рассматривается БД кораблей, участвовавших во второй мировой войне. Имеются следующие отношения:
Classes (class, type, country, numGuns, bore, displacement)
Ships (name, class, launched)
Battles (name, date)
Outcomes (ship, battle, result)
Корабли в «классах» построены по одному и тому же проекту, и классу присваивается либо имя первого корабля, построенного по данному проекту, либо названию класса дается имя проекта, которое не совпадает ни с одним из кораблей в БД. Корабль, давший название классу, называется головным.
Отношение Classes содержит имя класса, тип (bb для боевого (линейного) корабля или bc для боевого крейсера), страну, в которой построен корабль, число главных орудий, калибр орудий (диаметр ствола орудия в дюймах) и водоизмещение ( вес в тоннах). В отношении Ships записаны название корабля, имя его класса и год спуска на воду. В отношение Battles включены название и дата битвы, в которой участвовали корабли, а в отношении Outcomes – результат участия данного корабля в битве (потоплен-sunk, поврежден - damaged или невредим - OK).
Замечания. 1) В отношение Outcomes могут входить корабли, отсутствующие в отношении Ships. 2) Потопленный корабль в последующих битвах участия не принимает.
Удалите классы, имеющие в базе данных менее трех кораблей (учесть корабли из Outcomes).
мой вариант запроса
delete from Classes
from (select c.class, c.type, c.country, c.numGuns, c.bore, c.displacement
from Classes C, Ships s
where c.class = s.class
group by c.class, c.type, c.country, c.numGuns, c.bore, c.displacement
Having count (c.class) < 3
union
select c.class, c.type, c.country, c.numGuns, c.bore, c.displacement
from Classes C, Outcomes o
where c.class = o.ship
group by c.class, c.type, c.country, c.numGuns, c.bore, c.displacement
Having count (c.class) < 3) t1, Classes
where t1.class = Classes.class
Направте пожалуйста по правильному пути, не совсем понимаю что еще нужно сделать!
Есть вот такая задача
Рассматривается БД кораблей, участвовавших во второй мировой войне. Имеются следующие отношения:
Classes (class, type, country, numGuns, bore, displacement)
Ships (name, class, launched)
Battles (name, date)
Outcomes (ship, battle, result)
Корабли в «классах» построены по одному и тому же проекту, и классу присваивается либо имя первого корабля, построенного по данному проекту, либо названию класса дается имя проекта, которое не совпадает ни с одним из кораблей в БД. Корабль, давший название классу, называется головным.
Отношение Classes содержит имя класса, тип (bb для боевого (линейного) корабля или bc для боевого крейсера), страну, в которой построен корабль, число главных орудий, калибр орудий (диаметр ствола орудия в дюймах) и водоизмещение ( вес в тоннах). В отношении Ships записаны название корабля, имя его класса и год спуска на воду. В отношение Battles включены название и дата битвы, в которой участвовали корабли, а в отношении Outcomes – результат участия данного корабля в битве (потоплен-sunk, поврежден - damaged или невредим - OK).
Замечания. 1) В отношение Outcomes могут входить корабли, отсутствующие в отношении Ships. 2) Потопленный корабль в последующих битвах участия не принимает.
Удалите классы, имеющие в базе данных менее трех кораблей (учесть корабли из Outcomes).
мой вариант запроса
delete from Classes
from (select c.class, c.type, c.country, c.numGuns, c.bore, c.displacement
from Classes C, Ships s
where c.class = s.class
group by c.class, c.type, c.country, c.numGuns, c.bore, c.displacement
Having count (c.class) < 3
union
select c.class, c.type, c.country, c.numGuns, c.bore, c.displacement
from Classes C, Outcomes o
where c.class = o.ship
group by c.class, c.type, c.country, c.numGuns, c.bore, c.displacement
Having count (c.class) < 3) t1, Classes
where t1.class = Classes.class
Направте пожалуйста по правильному пути, не совсем понимаю что еще нужно сделать!