Характерные ошибки при решении задач на написание запросов на выборку (SELECT)База данных «Корабли»Упражнение 39 стр. 1 |
||
Найдите корабли, «сохранившиеся для будущих сражений»; то есть выведенные из строя в одной битве (damaged), они участвовали в другой. Вот пример неправильно понятого условия: Решение 3.4.1
Это решение исполнено в стиле реляционного исчисления, а именно, разыскиваются такие корабли в таблице Outcomes, которые были повреждены (первый предикат EXISTS) и которые участвовали более чем в одной битве (второй предикат EXISTS). Ошибка здесь состоит в том, что проигнорировано условие «сохранившиеся для будущих сражений», которое означает, что после битвы, в которой корабль получил повреждение, он принимал участие в более позднем сражении. Таким образом, для получения правильного решения этой задачи нужно анализировать даты сражений, которые содержатся в таблице сражений Battles. |