RIGHT (OUTER) - тип соединения " правое (внешнее)". Правое соединение таблиц включает в себя все строки из правой таблицы и те строки из левой таблицы, для которых выполняется условие соединения. Для строк из правой таблицы, для которых не найдено соответствия в левой, в столбцы, извлекаемые из левой таблицы, заносятся значения NULL.
Правое внешнее соединение является зеркальным отражением левого внешнего соединения. При нем вначале отбираются все строки соединяемой таблицы (здесь она становится главной) на основании условий предложения WHERE, затем к ним добавляются строки второй таблицы, указанной сразу после ключевого слова FROM с учетом условий, заданных в предложении ON.
Для иллюстрации этой зеркальности выполните оператор:[37]
SELECT C.CT_NAMEAS"Город",
A.AP_NAME AS"Аэропорт"
FROM AIRPORTA RIGHT OUTER JOINCITYC
ON A.AP_CT_CODE=C.CT_CODE
ORDER BY C.CT_NAME,A.AP_NAME
Теперь мы получим список из всех городов, если в городе имеется аэропорт, он будет представлен в соответствующем столбце, если аэропорта нет – столбец будет содержать пустые значения (NULL):
Листинг 18. Результат правого внешнего объединения таблиц AIROPORT и CITY - список всех городов с указанием аэропортов в том случае, если в этом городе есть аэропорты.
| Город
| Аэропорт
|
| Екатиренбург
| Кольцово
|
| Москва
| Быково
|
| Москва
| Внуково
|
| Москва
| Домодедово
|
| Москва
| Шереметьево
|
| Пермь
| Савино
|
| С. Петербург
| Пулково
|
| Чайковский
| NULL
|
В получившейся список попала строка
мы получили город Чайковский в котором в настоящее уже нет аэропорта.