Junior
95
questionbank
Как работает SQL Join?
Ответ от нейросети
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 |