Часто полезна операция объединения двух запросов, в которой второй запрос выбирает строки, исключенные первым. Такая операция называется внешним объединением.
Пример. Пусть в таблице STUDENT имеются записи о студентах, в которых не указан идентификатор университета. Требуется составить список студентов с указанием наименования университета для тех студентов, у которых эти данные есть, но при этом не отбрасывая и студентов, у которых университет не указан. Можно получить желаемые сведения, сформировав объединение двух запросов, один из которых выполняет выборку студентов с названиями их университетов, а второй выбирает студентов с NULL-значениями в поле UNIV_ID. В данном случае оказывается полезной возможность вставки в запрос констант, в нашем случае текстовой константы ‘не известен’, чтобы отметить в списке тех студентов , у которых отсутствует информация об университете.
SELECTSURNAME, NAME, UNIV_NAME
FROMSTUDENT, UNIVERSITY
WHERESTUDENT.UNIV_ID = UNIVERSITY.UNIV_ID
UNION
SELECTSURNAME, NAME, ‘неизвестен’
FROMSTUDENT
WHEREUNIV_ID IS NULL
ORDER BY1;
Для совместимости столбцов объединяемых запросов константу ‘неизвестен’ во втором запросе следует дополнить пробелами так, чтобы ее длина соответствовала длине поля UNIV_NAME или использовать для согласования типов функцию CAST. В некоторых СУБД согласование типов поля и замещающей его текстовой константы осуществляется автоматически.