Слайс

Аналитический тренажер

JOIN в SQL: как соединять таблицы?

JOIN используется, когда нужные данные находятся в нескольких таблицах. Это один из ключевых инструментов SQL.
Например, в одной таблице могут храниться действия пользователей, а в другой - информация о самих пользователях. Чтобы получить общий результат, таблицы нужно соединить:
SELECT
    a.column_1,
    b.column_2
FROM table_a AS a
JOIN table_b AS b
    ON a.user_id = b.user_id
Условие после ON показывает, по какому полю таблицы связаны между собой. Алиасы a и b делают запрос короче и понятнее.
Самый распространённый тип соединения - INNER JOIN. Он возвращает только те строки, для которых нашлась пара в обеих таблицах.
Важно внимательно выбирать ключ соединения. Если соединить таблицы по неправильному полю, результат будет некорректен.
JOIN часто используется в аналитике для объединения пользователей с событиями, заказов с платежами, товаров с категориями, клиентов с сегментами и так далее.
Помимо INNER JOIN, наиболее часто используется LEFT JOIN, а именно добавление данных к левой таблице из правой по ключевому полю. Понять, где правая, а где левая таблицы просто - нужно лишь визуализировать их.
Например, у нас есть таблица users с данными по пользователям и таблица orders с данными по их оплаченным заказам. Мы хотим узнать, встречался ли user_id в таблице orders (т.е. узнать, оплачивал ли пользователь хотя бы один раз заказ). Помимо прочего, мы можем использовать следующую конструкцию:
select *
    from users as a 
left join orders as b on a.user_id = b.user_id
where b.user_id is NULL 
По запросу выше мы получим пользователей, которые есть в таблице users, но которых нет в таблице orders.
Открыть тренажер