В заключение приведу еще одно решение, содержащее ту же ошибку, но не использующее внешние соединения:
Решение 3.1.3
Консоль
SELECT a.ship, b.displacement, b.numguns
FROM Outcomes a, Ships c, Classes b
WHERE a.battle='Guadalcanal' AND
a.ship = c.name AND
c.class = b.class
UNION
SELECT a.ship, NULL AS displacement, NULL AS numguns
FROM Outcomes a
WHERE a.battle = 'Guadalcanal' AND
a.ship NOT IN (SELECT name
FROM Ships
)
Заметим, что первое рассмотренное нами решение дало бы правильный результат для такого головного корабля. Поэтому чтобы решить эту задачу, нужно второе решение дополнить первым. Как не следует «дополнять», можно посмотреть в главе 4.
ПиР
Решить задачу на SQL-EX.RU