Join Right - присоединяйтесь к нам уже сегодня!
Join right или right join — это один из видов SQL JOIN, который объединяет строки двух таблиц с сохранением всех строк правой (второй) таблицы, а также соответствующих им строк из левой (первой) таблицы, если они имеются. Если строки из правой таблицы не имеют соответствующих строк из левой таблицы, то для них в результирующей таблице будут установлены NULL.
Пример кода:
Допустим, у нас есть две таблицы: users и orders. Таблица users содержит информацию о пользователях, а таблица orders содержит информацию о заказах, которые сделали эти пользователи.
Таблица users
+----+--------+--------+
| id | name | email |
+----+--------+--------+
| 1 | Alice | null |
| 2 | Bob | bob@example.com |
| 3 | Charlie| charlie@example.com |
+----+--------+--------+
Таблица orders
+----+---------+----------+
| id | user_id | order_date |
+----+---------+----------+
| 1 | 2 | 2021-01-01|
| 2 | 2 | 2021-01-10|
| 3 | 3 | 2021-02-05|
+----+---------+----------+
Для того, чтобы получить всю информацию о пользователях и их заказах, используем оператор RIGHT JOIN:
SELECT *
FROM orders
RIGHT JOIN users ON orders.user_id = users.id
Результат:
+----+---------+-----------+----+--------+---------------------+
| id | user_id | order_date| id | name | email |
+----+---------+-----------+----+--------+---------------------+
| 1 | 2 | 2021-01-01| 2 | Bob | bob@example.com |
| 2 | 2 | 2021-01-10| 2 | Bob | bob@example.com |
| 3 | 3 | 2021-02-05| 3 | Charlie| charlie@example.com |
| null| null | null | 1 | Alice | null |
+----+---------+-----------+----+--------+---------------------+
В результате выполнения запроса мы получили все строки из таблицы orders и соответствующие им строки из таблицы users, а также строку из таблицы users, для которой нет соответствующих строк в таблице orders.
Запрос RIGHT JOIN можно сформулировать иначе. Например, можно использовать оператор LEFT JOIN и поменять местами таблицы:
SELECT *
FROM users
LEFT JOIN orders ON orders.user_id = users.id
В таком случае полученный результат будет идентичен, за исключением порядка столбцов и строк.