Пересечение и разность стр. 2 |
|||||||||||||||||||||||||||||
Пример 5.7.4 Найти корабли из таблицы Outcomes, которые отсутствуют в таблице Ships. Задача легко решается при помощи оператора EXCEPT: Операция разности не является коммутативной, поэтому если переставить местами запросы, то мы получим решение совсем другой задачи: "Найти корабли из таблицы Ships, которые отсутствуют в таблице Outcomes". Эта задача на языке предметной области звучит так: "Найти корабли, которые не принимали участие в сражениях".Заметим, что если какой-либо корабль принимал участие в сражениях несколько раз, то по причине исключения дубликатов он будет присутствовать только один раз в результирующем наборе. У нас есть такой корабль - California, но он присутствует также и в таблице Ships, а потому не выводится рассмотренным выше запросом. Поэтому, чтобы продемонстрировать сказанное, исключим его из результатов второго запроса в операции разности:
Для имеющегося набора данных тот же результат мы получим при выполнении следующего запроса:
Соответственно, запрос
|