Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Решение задач по sql  [new]
Евгений_93
Member

Откуда:
Сообщений: 3
Здравствуйте!
Есть вот такая задача
Рассматривается БД кораблей, участвовавших во второй мировой войне. Имеются следующие отношения:
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

Направте пожалуйста по правильному пути, не совсем понимаю что еще нужно сделать!
30 май 17, 09:51    [20522063]     Ответить | Цитировать Сообщить модератору
 Re: Решение задач по sql  [new]
Cammomile
Member

Откуда:
Сообщений: 1212
Очередной студент, не читающий правила форума.

Мужчина, за вас домашку делать никто не будет. Предложите свое решение, а мы подскажем как сделать лучше.
30 май 17, 10:02    [20522136]     Ответить | Цитировать Сообщить модератору
 Re: Решение задач по sql  [new]
Cammomile
Member

Откуда:
Сообщений: 1212
А, тут есть вариант решения, просто не выделен код.
Having count (c.class) < 3) t1, Classes


Почитай про Rank(), Row_Number()
30 май 17, 10:04    [20522149]     Ответить | Цитировать Сообщить модератору
 Re: Решение задач по sql  [new]
Добрый Э - Эх
Guest
Cammomile,

я тебе более скажу - даже если это не домашка, то публикация и обсуждение заданий с sql-ex.ru - запрещена...
30 май 17, 10:06    [20522166]     Ответить | Цитировать Сообщить модератору
 Re: Решение задач по sql  [new]
vladislav109
Member

Откуда:
Сообщений: 69
задачка с sql-ex.ru
30 май 17, 10:07    [20522167]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить