Упражнение 55 (подсказки и решения)

Здесь мы приводим решение, которое верно (хотя и излишне) учитывает корабли из таблицы Outcomes.

SELECT t1.class, MIN(b.launched)
FROM (SELECT name, class
      FROM Ships
      UNION
      SELECT ship, class
      FROM Outcomes JOIN
           Classes ON ship = class AND
                      ship NOT IN(SELECT name
                                  FROM Ships
                                  )
      ) t1 LEFT JOIN
      Ships b ON t1.class = b.class
GROUP BY t1.class;
mssql
🚫
[[ error ]]
[[ column ]]
[[ value ]]

Единственная ошибка этого решения заключается в том, что не учтена ситуация, когда имеется класс, для которого нет кораблей в текущем состоянии базы данных. Заметим, что это допускается схемой, имеющей связь «один-ко-многим» между таблицами Classes и Ships.

Вернуться к обсуждению упражнения 55

Решить задачу на SQL-EX.RU