Oracle ПРАВО НАРУЖНОЕ СОЕДИНЕНИЕ
Что такое правильное внешнее объединение в Oracle?
RIGHT OUTER JOIN выполняет внутреннее объединение двух таблиц (предполагаемая таблица A, которая записывает перед ключевым словом join и таблица B, записывающая после ключевого слова join в операторе SQL) на основе условия, указанного после ключевого слова ON. Он возвращает все строки из таблицы B, а также несопоставленные строки из таблицы A. Для всех строк в B, у которых нет совпадающих строк в A, Oracle Database возвращает ноль для любых выражений списка выбора, содержащих столбцы A.
Синтаксис:
ВЫБЕРИТЕ table1.column, table2.column ИЗ таблицы 1 ЛЕВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ table2 ON (table1.column = table2.column);
Иллюстрированная презентация Oracle Right Outer Join
Пример 1: правое внешнее соединение Oracle
Следующий запрос извлекает все совпадающие строки в таблице отделов и таблицу сотрудников для критериев с одинаковым значением Department_id в обеих таблицах, а также эти строки из таблицы сотрудников, даже если в таблице отделов нет совпадений.
Пример таблицы: сотрудники
Пример таблицы: отделы
SELECT e.first_name, e.department_id, d.department_name
FROM employees e RIGHT OUTER JOIN departments d
ON (e.department_id = d.department_id);
Пример вывода:
FIRST_NAME DEPARTMENT_ID DEPARTMENT_NAME -------------------- ------------- ----------------- - Администрация Дженнифер 10 Пэт 20 Маркетинг Майкл 20 Маркетинг Сигал 30 Закупки Карен 30 Закупки Шелли 30 Закупки День 30 Покупка Тимоти 50 Доставка ............................................ ............................................ Уильям 110 Бухгалтерский учет Шелли 110 Бухгалтерский учет казначейство Корпоративный налог Контроль и Кредит Услуги для акционеров Выгоды производство строительство .............................................
Пример-2:
Напишите оператор SQL, чтобы показать номер отдела, имя, количество сотрудников в каждом отделе и среднюю зарплату всех отделов, а также имена, зарплаты и рабочие места сотрудников, работающих в каждом отделе.
Пример таблицы: сотрудники
Пример таблицы: отделы
SELECT a.department_id, a.department_name,
count(m1.employee_id) employees,
NVL(TO_CHAR(AVG(m1.salary), '99999.99'), '- Nil -') avg_sal,
m2.first_name, m2.salary, m2.job_id
FROM departments a RIGHT OUTER JOIN employees m1
ON a.department_id = m1.department_id
RIGHT OUTER JOIN employees m2
ON a.department_id = m2.department_id
GROUP BY a.department_id, a.department_name, m2.first_name,
m2.salary, m2.job_id
ORDER BY a.department_id, employees;
Пример вывода:
DEPARTMENT_ID DEPARTMENT_NAME EMPLOYEES AVG_SAL LAST_NAME SALARY JOB_ID ------------- ------------------------------ ------- --- --------- ------------------------- ---------- --- ------ 10 Администрация 1 4400,00 кит 4400 AD_ASST 20 Маркетинг 2 9500.00 Хартштейн 13000 MK_MAN 20 Marketing 2 9500.00 Fay 6000 MK_REP 30 Закупки 6 4150,00 Байда 2900 PU_CLERK 30 Закупки 6 4150,00 Химуро 2600 PU_CLERK 30 Закупки 6 4150,00 Тобиас 2800 PU_CLERK 30 Закупки 6 4150.00 Raphaely 11000 PU_MAN 30 Закупки 6 4150,00 Кольменарес 2500 PU_CLERK 30 Закупки 6 4150,00 Khoo 3100 PU_CLERK 40 Человеческие ресурсы 1 6500,00 Маврис 6500 HR_REP 50 Доставка 45 3475,56 Стайлз 3200 ST_CLERK .................................................. .................................................. ............ .................................................. .................................................. ............ 100 Финансы 6 8601,33 Sciarra 7700 FI_ACCOUNT 100 Финансы 6 8601,33 Фавиет 9000 FI_ACCOUNT 100 Финансы 6 8601,33 Гринберг 12008 FI_MGR 100 Финансы 6 8601,33 Урман 7800 FI_ACCOUNT 100 Финансы 6 8601,33 Чен 8200 FI_ACCOUNT 100 Финансы 6 8601,33 Попп 6900 FI_ACCOUNT 110 Бухгалтерия 2 10154.00 Гитц 8300 AC_ACCOUNT 110 Бухгалтерский учет 2 10154,00 Хиггинс 12008 AC_MGR 0 - ноль - грант 7000 SA_REP
ПРАВИЛЬНОЕ СОЕДИНЕНИЕ: SQL и другие реляционные базы данных
Предыдущая: ЛЕВАЯ НАРУЖНАЯ СОЕДИНЕНИЕ
Далее: ПОЛНОЕ НАРУЖНОЕ СОЕДИНЕНИЕ
Новый контент: Composer: менеджер зависимостей для PHP , R программирования