Иллюстрированный самоучитель по SQL для начинающих

Реляционные операторы

Левое внешнее объединение

В запросе, имеющем объединение, левая таблица – это та, которая в операторе запроса предшествует ключевому слову JOIN, а правая – та, которая следует за ним. При левом внешнем объединении (left outer join) несоответствующие строки, имеющиеся в левой таблице, в выводе сохраняются, а имеющиеся в правой – из него, наоборот, удаляются.

Чтобы понять работу внешних объединений, представьте себе корпоративную базу данных, в которой хранятся записи о сотрудниках компании, ее отделах и представительствах. Примеры данных этой компании приведены в табл. 10.1-10.3.

Таблица 10.1. LOCATION (представительство).

LOCATION_ID (идентификатор представительства) CITY (город)
1 Boston
3 Tampa
5 Chicago

Таблица 10.2. DEPT (отдел).

DEPT_ID (идентификатор отдела) LOCATION_ID NAME (название)
21 1 Sales
24 1 Admin
27 5 Repair
29 5 Stock

Таблица 10.3. EMPLOYEE (сотрудник).

EMP_ID (идентификатор сотрудника) DEPT_ID NAME (фамилия)
61 24 Kirk
63 27 McCoy

Теперь предположим, что вам нужно просмотреть все данные обо всех сотрудниках, в том числе, в каком отделе и представительстве сотрудник работает. Такую задачу можно выполнить с помощью объединения, основанного на равенстве:

SELECT *
FROM LOCATION L, DEPT D, EMPLOYEE E
WHERE L.LocationlD a D.LocationID
AND D.DeptID = E.DeptID;

Результат выполнения этого оператора следующий:

1 Boston 24 Admin 61 24 Kirk
5 Chicago 27 Repair 63 27 McCoy

Полученная в результате таблица содержит все данные обо всех сотрудниках, в том числе, в каком отделе и представительстве сотрудник работает. Так как каждый сотрудник компании работает в каком-либо представительстве и в одном из отделов, то для этого примера как раз и подходит объединение, основанное на равенстве.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.