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

UptoLike

FROM Совместители, Сотрудник, Замещение
WHERE Сотрудник.Город < > Совместитель.Город
AND Замещение.Ид_Сотр = Сотрудник.Ид_Совм;
Каким же образом реализуется данный запрос ?
Во-первых, после выполнения инструкции FROM мы получаем декартово
произведение по трем отношениям (таблицам Совместители, Сотрудник и Замещение).
Далее, после выполнения инструкции WHERE, мы получаем выборку из
полученного произведения. Для этого в
каждой строке декартова произведения (это наша
виртуальная таблица) проверяется в соответствующих столбцах условие, чтобы значение
из ячейки (поля) рабочей таблицы Замещения.Ид_Сотр равнялось значению ячейки
Сотрудник.Ид_Совм. При этом же в этой строке проверяется, чтобы значение ячейки
Сотрудник.Город не равнялось значению ячейки Совместитель.Город. Строка,
удовлетворяющая указанному
условию, заносится в рабочую таблицу, которую мы и
увидим на экране.
Замечание. Ячейка - это элемент двухмерного массива (если таблицу представить в виде
массива).
Наконец, после выполнения оператора SELECT мы получаем проекцию выборки
по столбцам, указанным в инструкции SELECT.
Следовательно, не строго говоря, инструкция FROM в SQL соответствует
декартову произведению, инструкция WHERE соответствует выборке, а совместная
инструкция SELECT – FROM - WHERE выражает собой проекцию выборки
произведения.
Теперь, когда алгоритм работы любой инструкции типа SELECT – FROM
WHERE Вам ясен, не трудно будет расширить предыдущий запрос так, чтобы
на экран
выдавалась и фамилия Совместителя. Это необходимо для читаемости результирующей
таблицы.
Измененная конструкция запроса будет:
SELECT Дата_замены, Сотрудник.Фамилия, Замещение.Ид_Сотр,
Совместитель.Фамилия, Замещение.Ид_Совм
FROM Совместители, Сотрудник, Замещение
WHERE Сотрудник.Город < > Совместитель.Город