JOIN
JOIN склеивает строки из двух таблиц по общему полю. Данные в базе обычно разложены по разным таблицам (пользователи отдельно, заказы отдельно) — JOIN собирает их вместе для одного запроса.
SELECT users.name, orders.total
FROM users
JOIN orders ON users.id = orders.user_id;
ON указывает, по какому полю связаны таблицы — обычно это внешний ключ (orders.user_id указывает на users.id).
Копнуть глубже
Виды JOIN — разница в том, что происходит, если совпадения нет:
-- INNER JOIN (или просто JOIN) — только строки, у которых есть пара в обеих таблицах
SELECT * FROM users JOIN orders ON users.id = orders.user_id;
-- LEFT JOIN — все строки из левой таблицы, даже без пары справа (там будет NULL)
SELECT * FROM users LEFT JOIN orders ON users.id = orders.user_id;
-- покажет ВСЕХ пользователей, даже тех, у кого ещё нет заказов
INNER JOIN— пересечение (только то, что есть в обеих таблицах);LEFT JOIN— всё из левой + совпадения справа;RIGHT JOIN— зеркально, всё из правой;FULL OUTER JOIN— вообще всё из обеих, даже без совпадений (поддерживается не всеми СУБД).
Без JOIN пришлось бы делать два отдельных запроса и склеивать результаты в коде вручную — JOIN делает это на уровне базы, эффективнее.
🎤 Закрыл тему, если можешь объяснить:
• зачем нужен JOIN и что значит ON;
• разницу INNER JOIN и LEFT JOIN (если дошёл до 2-го слоя).
• разницу INNER JOIN и LEFT JOIN (если дошёл до 2-го слоя).