Руководство по SQL. RIGHT JOIN.

Запрос RIGHT JOIN возвращает все записи из правой таблицы, даже если у них нет совпадений в левой. Это означает, что если у нас нет совпадений в левой таблице, то мы получим все записи из правой, а колонки из левой таблицы будут иметь значения NULL.

SQL запрос с использованием RIGHT JOIN имеет следующий вид:


SELECT таблица1.колонка1, таблица2.колонка2...
FROM таблица1
RIGHT JOIN таблицы2
ON таблицы1.общее_поле = таблица2.общее_поле;

Пример:
Предположим, что у нас есть две таблицы:
developers:


+----+-------------------+------------+------------+--------+
| ID | NAME              | SPECIALTY  | EXPERIENCE | SALARY |
+----+-------------------+------------+------------+--------+
|  1 | Eugene Suleimanov | Java       |          2 |   2500 |
|  2 | Peter Romanenko   | Java       |          3 |   3500 |
|  3 | Andrei Komarov    | JavaScript |          3 |   2500 |
|  4 | Konstantin Geiko  | C#         |          2 |   2000 |
|  5 | Asya Suleimanova  | UI/UX      |          2 |   1800 |
|  6 | Kolya Nikolaev    | Javascript |          5 |   3400 |
|  7 | Ivan Ivanov       | C#         |          1 |    900 |
|  8 | Ludmila Geiko     | UI/UX      |          2 |   1800 |
+----+-------------------+------------+------------+--------+

tasks:


+---------+-------------+------------------+------------+--------------+
| TASK_ID | TASK_NAME   | DESCRIPTION      | DEADLINE   | DEVELOPER_ID |
+---------+-------------+------------------+------------+--------------+
|       1 | Bug#123     | Fix company list | 2016-06-03 |            1 |
|       2 | Bug#321     | Fix registration | 2016-06-06 |            2 |
|       3 | Feature#777 | Latest actions   | 2016-06-25 |            3 |
|       4 | Feature#3   | Super feature    | 2016-06-15 |            9 |
+---------+-------------+------------------+------------+--------------+

Попробуем выполнить следующий запрос:


mysql> SELECT ID, NAME, TASK_NAME, DEADLINE 
FROM developers 
RIGHT JOIN tasks 
ON developers.ID = tasks.DEVELOPER_ID;

В результате мы получим следующую таблицу:


+------+-------------------+-------------+------------+
| ID   | NAME              | TASK_NAME   | DEADLINE   |
+------+-------------------+-------------+------------+
|    1 | Eugene Suleimanov | Bug#123     | 2016-06-03 |
|    2 | Peter Romanenko   | Bug#321     | 2016-06-06 |
|    3 | Andrei Komarov    | Feature#777 | 2016-06-25 |
| NULL | NULL              | Feature#3   | 2016-06-15 |
+------+-------------------+-------------+------------+

Как видите, мы получили все задачи из таблицы tasks, а поля ID и NAME записи, у которой нет совпадений в таблице developers имеют значение NULL.

На этом мы заканчиваем изучение RIGHT JOIN.