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

UptoLike

что мы знаем фамилию совместителя: Петров, но не знаем значение его поля Ид_Совм, и
хотим извлечь все записи из таблицы ЗАМЕЩЕНИЕ (рис. 2.7), тогда запрос к базе будет:
SELECT *
FROM Замещение
WHERE Ид_Совм =
(SELECT Ид_Совм
FROM Совместители
WHERE Фамилия = "Петров");
Чтобы исполнить внешний (основной) запрос, SQL должен сначала выполнить
внутренний подзапрос внутри предложения
WHERE. Он "пробежит" все строки таблицы
СОВМЕСТИТЕЛЕЙ и выберет те строки, где поле Фамилия равно значению Петров, и
извлечет значения поля Ид_Совм этих строк.
Единственной найденной строкой, естественно, будет Ид_Совм = 1. Однако SQL
не просто выдает это значение, а помещает его в предикат основного запроса вместо
самого подзапроса так. чтобы предикат
прочитал что:
WHERE Ид_Совм = 1
SELECT *
FROM Замещение
WHERE Ид_Совм =
(SELECT Ид_Совм
FROM Совместители
WHERE Фамилия = "Петров");
Ид_Совм Фамилия Имя Отчество ИНН Город Район Индекс
1 Петров Петр Петрович 836 СПБ Центр 97000
Рис. 5.16. Использование подзапроса