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

UptoLike

Очевидно, что с помощью соединения несложно сформировать запрос на
обработку данных из нескольких таблиц. Кроме того, в такой запрос можно включить
любые части предложения SELECT, рассмотренные в главе 4 (выражения с
использованием функций, группирование с отбором указанных групп и упорядочением
полученного результата). Следовательно, соединения позволяют обрабатывать
множество взаимосвязанных таблиц как единую таблицу. Фактически
если схема модели
верна, то весь фрагмент предметной области, описанный в базе данных, должен
восприниматься как единое отношение. Это постулат реляционного подхода, и какие
проблемы теоретического и практического плана [1, 2, 6, 13, 14, 16, 18, 26, 29, 30, 31] при
этом возникают выходят за рамки данного пособия.
Кроме механизма соединений в SQL есть механизм вложенных подзапросов,
позволяющий объединить несколько простых запросов
в едином предложении SELECT.
Иными словами, вложенный подзапрос - это уже знакомый нам подзапрос (с
небольшими ограничениями), который вложен в WHERE фразу другого вложенного
подзапроса или WHERE фразу основного запроса.
Для иллюстрации вложенного подзапроса, вернемся к предыдущему примеру и
попробуем получить перечень сотрудников, которые были в Мурманске, и какова
длительность этих командировок.
Результат запроса
имеет вид
SELECT Фамилия, Название_ отдела, Точка
FROM Отдел_ Сотрудник, Сотрудник, Отдел, Командировки
WHERE Сотрудник.Ид_Сотр=Отдел_Сотрудник.Ид_Сотр AND
Отдел_ Сотрудник.Ид_Отд=Отдел.Ид_Отд AND
Отдел_ Сотрудник.Ид_Сотр=Командировки.Ид_Сотр AND
Отдел.Название_ отдела="Кафедра КТиПО" AND
Командировки.Точка="Мурманск" AND
Командировки.Дата_убытия IS NOT NULL AND
(SELECT Командировки.Дата_прибытия -
Командировки.Дата_ убытия) AS Кол-во_ дней
FROM Командировки X
WHERE X.Ид_Сотр=Отдел_Сотрудник.Ид_Сотр);
Результатом запроса будет отношение (рис. 5.2):