Ответ
JOIN'ы в SQL используются для комбинирования строк из двух или более таблиц на основе связанных столбцов между ними. Вот основные типы:
INNER JOIN
Возвращает только те записи, которые имеют совпадающие значения в обеих таблицах. Это наиболее часто используемый тип соединения.
SELECT Orders.OrderID, Customers.CustomerName
FROM Orders
INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID;
Результат: только заказы, у которых есть соответствующий покупатель.
LEFT JOIN
(или LEFT OUTER JOIN
)
Возвращает все записи из левой таблицы и совпадающие записи из правой. Если совпадения в правой таблице нет, ее столбцы будут содержать NULL
.
SELECT Customers.CustomerName, Orders.OrderID
FROM Customers
LEFT JOIN Orders ON Customers.CustomerID = Orders.CustomerID;
Результат: все покупатели, даже те, у которых нет заказов (у них OrderID
будет NULL
).
RIGHT JOIN
(или RIGHT OUTER JOIN
)
Противоположность LEFT JOIN
. Возвращает все записи из правой таблицы и совпадающие из левой. Если совпадения в левой таблице нет, ее столбцы будут NULL
.
FULL OUTER JOIN
Возвращает все записи, когда есть совпадение либо в левой, либо в правой таблице. Фактически, это объединение результатов LEFT
и RIGHT JOIN
.
SELECT Customers.CustomerName, Orders.OrderID
FROM Customers
FULL OUTER JOIN Orders ON Customers.CustomerID = Orders.CustomerID;
Результат: все покупатели и все заказы. Если у покупателя нет заказа или у заказа нет покупателя, соответствующие поля будут NULL
.
CROSS JOIN
Возвращает декартово произведение двух таблиц — каждая строка из первой таблицы соединяется с каждой строкой из второй. Используется редко, в основном для генерации комбинаций или тестовых данных.