Базы данных. Основы SQL реляционных баз данных. Копейкин М.В - 119 стр.

UptoLike

Основной запрос затем выполняется как обычно, но уже с известным значением
Ид_Совм. Конечно же, подзапрос должен выбрать один и только один столбец, а тип
данных этого столбца должен совпадать с тем значением, с которым он будет
сравниваться в предикате.
Подчеркнем, что представленный запрос будет работать правильно, пока среди
совместителей не
появится сотрудник с такой же фамилией.
При использовании подзапросов в предикатах, основанных на реляционных
операторах, Вы должны быть уверены, что использовали подзапрос, который будет
выдавать одну и только одну строку вывода. Если подзапрос не выводит никаких
значений вообще, команда не будет ошибочной, но основной запрос не выведет никаких
значений
Можно
использовать DISTINCT в подзапросе или подзапросы с IN (см. п. 5.3.2).
5.3.2. Простые вложенные подзапросы
Простые вложенные подзапросы используются для представления множества
значений, обработка которых должна осуществляться в каком-либо предикате IN.
Проиллюстрируем простой подзапрос на следующем примере. Найти фамилии
сотрудников, для которых планировались командировки в Мурманск:
SELECT DISTINCT Фамилия
FROM Сотрудник
WHERE Ид_Сотр IN
( SELECT Ид_Сотр
FROM Командировки
WHERE Точка = "Мурманск");
Внутренний подзапрос выполняется первым и готовит для более старшего
подзапроса результат, затем исполняется вышестоящий запрос.
Этот вложенный подзапрос выдает множество идентификаторов сотрудников, для
которых планировались командировки в Мурманск, а именно множество {1, 2, 5}.
Поэтому первоначальный запрос эквивалентен такому простому запросу с IN: