SELECT class, result
FROM
(select classes.class, name as NAME, result
from ships
inner join classes
on ships.class = classes.class
LEFT JOIN outcomes
on
ships.name = outcomes.ship
WHERE result ='sunk'
union
select classes.class, ship as NAME, result
from outcomes
inner join classes
on outcomes.ship = classes.class
WHERE result ='sunk'
) potkor
WHERE EXISTS
(SELECT class,
count(name)
FROM
(select classes.class, name as NAME, result
from ships
inner join classes
on ships.class = classes.class
LEFT JOIN outcomes
on
ships.name = outcomes.ship
union
select classes.class, ship as NAME, result
from outcomes
inner join classes
on outcomes.ship = classes.class
) a
GROUP BY class
HAVING count(name) > 2
) three
WHERE potkor.class = three.class