JOINНачальный
RIGHT JOIN
Возвращает все строки из правой таблицы. Для строк без пары в левой — NULL.
Синтаксис
SELECT ... FROM t1 RIGHT JOIN t2 ON t1.id = t2.t1_id;Объяснение
RIGHT JOIN — зеркало LEFT JOIN. На практике используется редко: обычно можно переписать порядок таблиц и использовать LEFT JOIN.
RIGHT JOIN и LEFT JOIN — синонимы при перестановке таблиц: A RIGHT JOIN B = B LEFT JOIN A.
Пример
-- Эквивалентные запросы
SELECT * FROM orders o RIGHT JOIN users u ON u.id = o.user_id;
-- То же самое:
SELECT * FROM users u LEFT JOIN orders o ON o.user_id = u.id;Связанные термины
Анекдоты по теме
Таблица Users пишет таблице Orders: — Ты забыл про меня. Мы не связаны. Orders: — У тебя нет внешнего ключа ко мне. Users: — Значит, я буду NULL в твоей жизни. DBA: — Это LEFT JOIN, успокойтесь.
— Что такое N+1 проблема? — Загрузил список из 100 пользователей — 1 запрос. Потом для каждого загрузил заказы — 100 запросов. Итого 101 запрос вместо 1 с JOIN. — Как исправить? — prefetch_related / eager loading / JOIN.
— Почему JOIN любят, но боятся? — Потому что соединить две таблицы легко. А четыре — уже сложно. А восемь — ты уже не программист, а жонглёр.