Joins

Базовый SQL
≈ 2 мин чтения

Когда данных из одной таблицы недостаточно

В реляционной базе связанные данные обычно хранятся в разных таблицах: пользователь — отдельно, его заказы — отдельно, товары заказа — ещё в одной таблице. JOIN позволяет собрать такие части в один результат, используя связь между строками.

Главный вопрос при любом соединении — какие строки должны считаться связанными и что делать со строками, для которых пара не нашлась. Разные виды JOIN как раз отвечают на эту вторую часть по-разному.

Что будет внутри раздела

  • Основы JOIN. Разберём сам принцип соединения таблиц и условие ON.
  • INNER JOIN. Оставим только строки, для которых есть совпадение с обеих сторон.
  • LEFT JOIN. Сохраним все строки левой таблицы, даже если связанной строки справа нет.
  • RIGHT JOIN. Посмотрим на симметричный вариант с сохранением всех строк правой таблицы.
  • FULL JOIN. Объединим совпавшие строки и сохраним несовпавшие строки обеих таблиц.
  • CROSS JOIN. Разберём декартово произведение — все возможные комбинации строк двух наборов.
  • SELF JOIN. Научимся соединять таблицу саму с собой через разные псевдонимы.
  • Несколько JOIN. Соберём данные сразу из трёх и более таблиц, последовательно добавляя связи.

Сначала важно научиться буквально читать каждое соединение: какая таблица находится слева, какая справа, по какому условию строки сопоставляются и какие строки должны пережить отсутствие пары.