Назад к вопросам
Junior
64
questionbank
Как работает SQL Join?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
SQL JOIN объединяет строки из двух или более таблиц на основе связанного столбца между ними. Существует несколько типов JOIN:
INNER JOIN: Возвращает строки, где есть совпадения значений в обеих таблицах.LEFT (OUTER) JOIN: Возвращает все строки из левой таблицы и совпадающие строки из правой. Если совпадений в правой таблице нет, возвращаютсяNULLзначения для столбцов правой таблицы.RIGHT (OUTER) JOIN: Возвращает все строки из правой таблицы и совпадающие строки из левой. Если совпадений в левой таблице нет, возвращаютсяNULLзначения для столбцов левой таблицы.FULL (OUTER) JOIN: Возвращает все строки из обеих таблиц. Если совпадений нет, возвращаютсяNULLзначения для соответствующих столбцов.CROSS JOIN: Возвращает декартово произведение двух таблиц (каждая строка из первой таблицы объединяется с каждой строкой из второй).
Синтаксис обычно выглядит так:
SELECT столбец1, столбеце2...
FROM таблица1
JOIN таблица2 ON таблица1.общий_столбец = таблица2.общий_столбец;
Пример INNER JOIN:
SELECT orders.order_id, customers.customer_name
FROM orders
INNER JOIN customers ON orders.customer_id = customers.customer_id;
Рассмотрим таблицы customers и orders:
customers
| customer_id | customer_name |
|---|---|
| 1 | Alice |
| 2 | Bob |
| 3 | Charlie |
orders
| order_id | customer_id | amount |
|---|---|---|
| 101 | 1 | 100 |
| 102 | 2 | 150 |
| 103 | 1 | 200 |
| 104 | 4 | 50 |
Результат INNER JOIN будет:
| order_id | customer_name |
|---|---|
| 101 | Alice |
| 102 | Bob |
| 103 | Alice |
Результат LEFT JOIN (orders LEFT JOIN customers):
| order_id | customer_id | amount | customer_name |
|---|---|---|---|
| 101 | 1 | 100 | Alice |
| 102 | 2 | 150 | Bob |
| 103 | 1 | 200 | Alice |
| 104 | 4 | 50 | NULL |