Назад к вопросам
Junior
70
questionbank
Как работает SQL Join?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
SQL JOIN объединяет строки из двух или более таблиц на основе связанного столбца между ними. Типы JOIN определяют, какие строки будут включены в результирующий набор:
INNER JOIN: Возвращает строки, имеющие совпадающие значения в обеих таблицах.LEFT JOIN(илиLEFT OUTER JOIN): Возвращает все строки из левой таблицы и совпадающие строки из правой таблицы. Если совпадений в правой таблице нет, поля из правой таблицы будутNULL.RIGHT JOIN(илиRIGHT OUTER JOIN): Возвращает все строки из правой таблицы и совпадающие строки из левой таблицы. Если совпадений в левой таблице нет, поля из левой таблицы будутNULL.FULL JOIN(илиFULL OUTER JOIN): Возвращает все строки, когда есть совпадение в одной из таблиц. Комбинированный результирующий набор содержит все строки из обеих таблиц, заполняя поляNULLтам, где нет совпадений.CROSS JOIN: Возвращает декартово произведение двух таблиц. Результирующий набор содержит все возможные комбинации строк из обеих таблиц.
Синтаксис:
SELECT column_name(s)
FROM table1
JOIN_TYPE table2
ON table1.column_name = table2.column_name;
Пример INNER JOIN:
Предположим, у нас есть таблицы Orders (id заказа, id клиента) и Customers (id клиента, имя клиента).
Таблица Orders:
| order_id | customer_id |
|---|---|
| 1 | 101 |
| 2 | 102 |
| 3 | 101 |
| 4 | 103 |
Таблица Customers:
| customer_id | customer_name |
|---|---|
| 101 | Alice |
| 102 | Bob |
| 104 | Charlie |
Запрос INNER JOIN:
SELECT Orders.order_id, Customers.customer_name
FROM Orders
INNER JOIN Customers ON Orders.customer_id = Customers.customer_id;
Результат:
| order_id | customer_name |
|---|---|
| 1 | Alice |
| 2 | Bob |
| 3 | Alice |
| 4 | NULL |
Исправленный результат INNER JOIN:
| order_id | customer_name |
|---|---|
| 1 | Alice |
| 2 | Bob |
| 3 | Alice |