Оператор RIGHT JOIN в SQL возвращает все строки из правой таблицы, даже если нет совпадений в таблице слева. Это означает, что если положение ON соответствует 0 (ноль) записей в таблице слева, объединение возвратит строку результата, но с NULL в каждом столбце из левой таблицы.
Это означает, что right join возвращает все значения из таблицы справа, плюс совпавших значения из левой таблицы или NULL в случае отсутствия согласования предиката.
Основной синтаксис RIGHT JOIN выглядит следующим образом:
SELECT table1.column1, table2.column2... FROM table1 RIGHT JOIN table2 ON table1.common_field = table2.common_field;
Рассмотрим следующие две таблицы,
Таблица 1 — Таблица CUSTOMERS выглядит следующим образом:
+----+----------+-----+-----------+----------+ | ID | NAME | AGE | ADDRESS | SALARY | +----+----------+-----+-----------+----------+ | 1 | Maxim | 35 | Moscow | 21000.00 | | 2 | AndreyEx | 38 | Krasnodar | 55500.00 | | 3 | Oleg | 33 | Rostov | 34000.00 | | 4 | Masha | 35 | Moscow | 34000.00 | | 5 | Ruslan | 34 | Omsk | 45000.00 | | 6 | Dima | 32 | SP | 45000.00 | | 7 | Roma | 34 | SP | 10000.00 | +----+----------+-----+-----------+----------+
Таблица 2 — Таблица ORDERS выглядит следующим образом:
+-----+---------------------+-------------+--------+ |OID | DATE | CUSTOMER_ID | AMOUNT | +-----+---------------------+-------------+--------+ | 102 | 2017-01-11 00:00:00 | 3 | 34000 | | 100 | 2017-01-11 00:00:00 | 3 | 34000 | | 101 | 2017-02-02 00:00:00 | 2 | 12500 | | 103 | 2017-03-05 00:00:00 | 4 | 45000 | +-----+---------------------+-------------+--------+
Теперь, давайте объединим эти две таблицы с помощью RIGHT JOIN следующим образом.
SQL> SELECT ID, NAME, AMOUNT, DATE FROM CUSTOMERS RIGHT JOIN ORDERS ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;
Это произведет следующий результат:
+----+----------+--------+---------------------+ | ID | NAME | AMOUNT | DATE | +----+----------+--------+---------------------+ | 3 | Oleg | 34000 | 2017-01-11 00:00:00 | | 3 | Oleg | 34000 | 2017-01-11 00:00:00 | | 2 | AndreyEx | 12500 | 2017-02-02 00:00:00 | | 4 | Masha | 45000 | 2017-03-05 00:00:00 | +----+----------+--------+---------------------+