JOIN - об'єднання таблиць
Навіщо потрібен JOIN?
JOIN дозволяє об'єднувати дані з кількох таблиць в одному запиті. Це основа реляційних баз даних.
Типи JOIN
INNER JOIN
Тільки співпадіння
LEFT JOIN
Всі з лівої + співпадіння
RIGHT JOIN
Всі з правої + співпадіння
FULL JOIN
Всі з обох таблиць
INNER JOIN
Повертає тільки записи, які мають співпадіння в обох таблицях:
SELECT users.name, orders.total
FROM users
INNER JOIN orders ON users.id = orders.user_id; LEFT JOIN
Повертає всі записи з лівої таблиці + співпадіння з правої:
SELECT users.name, orders.total
FROM users
LEFT JOIN orders ON users.id = orders.user_id; Користувачі без замовлень отримають NULL в колонці total.
RIGHT JOIN
Повертає всі записи з правої таблиці + співпадіння з лівої:
SELECT users.name, orders.total
FROM users
RIGHT JOIN orders ON users.id = orders.user_id; FULL OUTER JOIN
Повертає всі записи з обох таблиць:
SELECT users.name, orders.total
FROM users
FULL OUTER JOIN orders ON users.id = orders.user_id; Псевдоніми таблиць
Для скорочення використовуй псевдоніми:
SELECT u.name, o.total
FROM users u
JOIN orders o ON u.id = o.user_id; JOIN кількох таблиць
SELECT u.name, o.total, p.name AS product_name
FROM users u
JOIN orders o ON u.id = o.user_id
JOIN order_items oi ON o.id = oi.order_id
JOIN products p ON oi.product_id = p.id; JOIN з умовами
SELECT u.name, o.total
FROM users u
JOIN orders o ON u.id = o.user_id
WHERE o.total > 1000
ORDER BY o.total DESC; Порада: JOIN без ON поверне декартів добуток (всі комбінації).
Завжди вказуй умову ON!
Форматування SQL
Best Practice: Форматуй SQL запити для читабельності:
- Кожен clause (SELECT, FROM, JOIN, WHERE) на новому рядку
- Використовуй відступи для вкладених елементів
- Ключові слова ВЕЛИКИМИ літерами
Практика
Спробуй в SQL пісочниці:
SELECT
u.name,
o.total
FROM users u
INNER JOIN orders o ON u.id = o.user_id; SELECT
u.name,
o.total
FROM users u
LEFT JOIN orders o ON u.id = o.user_id;