Данные обычно разнесены по таблицам. Например, users (пользователи) и orders (заказы), где у заказа есть user_id — ссылка на пользователя. JOIN соединяет строки двух таблиц по общему ключу:
SELECT orders.id, users.name, orders.amount FROM orders JOIN users ON users.id = orders.user_id;
Условие после ON говорит, как сопоставлять строки: заказ связывается с пользователем, у которого id равен user_id заказа.
Чтобы не писать длинные имена, таблицам дают короткие псевдонимы:
SELECT o.id, u.name, o.amount FROM orders o JOIN users u ON u.id = o.user_id;
Обычный JOIN (он же INNER JOIN) оставляет только строки, у которых есть пара в обеих таблицах: заказы без пользователя и пользователи без заказов в результат не попадут. JOIN — ключевой навык SQL: реальные данные почти всегда лежат в нескольких связанных таблицах.