Назад к вопросам
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