← К списку уроков
SQL·Средний·6 мин

JOIN — собираем данные из двух таблиц

JOIN склеивает таблицы по общему полю. INNER, LEFT, RIGHT — разные стратегии. Без JOIN-ов работать аналитиком невозможно.

Зачем JOIN

В реальной БД данные раскиданы по разным таблицам. Заказы в одной, клиенты в другой. Чтобы получить «имя клиента + сумма заказа» — нужен JOIN.

INNER JOIN

Берёт только те строки, у которых есть пара в обеих таблицах.

SELECT c.name, o.total
FROM customers c
INNER JOIN orders o ON o.customer_id = c.id;

Клиенты без заказов в результат не попадут.

LEFT JOIN

Сохраняет ВСЕ строки из левой таблицы. Если пары справа нет — будут NULL.

SELECT c.name, COUNT(o.id) AS orders_count
FROM customers c
LEFT JOIN orders o ON o.customer_id = c.id
GROUP BY c.name;

Тут увидишь даже клиентов без заказов (с orders_count = 0).

Когда какой использовать

  • INNER — нужны только связанные записи
  • LEFT — нужны все из левой, даже без пар справа
  • RIGHT — то же, но с правой (редко используется на практике)

💡 90% работы аналитика — это LEFT JOIN. INNER даёт лишь то что точно совпало.