В языке SQL соединение (JOIN) используется для объединения строк из двух и более таблиц на основе связанного столбца. Существует несколько типов соединений, которые позволяют гибко управлять объединением данных.
INNER JOIN
INNER JOIN возвращает только те строки, у которых есть совпадение в обеих таблицах.
Пример
SELECT orders.id, customers.name, orders.amount
FROM orders
INNER JOIN customers ON orders.customer_id = customers.id;
LEFT JOIN (LEFT OUTER JOIN)
LEFT JOIN возвращает все строки из левой таблицы и только совпадающие строки из правой таблицы. Если совпадения нет, в правой части будут NULL-значения.
Пример
SELECT customers.name, orders.id, orders.amount
FROM customers
LEFT JOIN orders ON customers.id = orders.customer_id;
RIGHT JOIN (RIGHT OUTER JOIN)
RIGHT JOIN возвращает все строки из правой таблицы и только совпадающие строки из левой таблицы. Если совпадения нет, в левой части будут NULL-значения.
Пример
SELECT orders.id, customers.name, orders.amount
FROM orders
RIGHT JOIN customers ON orders.customer_id = customers.id;
FULL JOIN (FULL OUTER JOIN)
FULL JOIN возвращает все строки из обеих таблиц. Если в одной из таблиц нет совпадения, будут возвращены NULL-значения.
Пример
SELECT customers.name, orders.id, orders.amount
FROM customers
FULL JOIN orders ON customers.id = orders.customer_id;
CROSS JOIN
CROSS JOIN выполняет декартово произведение таблиц, создавая все возможные комбинации строк.
Пример
SELECT customers.name, products.name
FROM customers
CROSS JOIN products;
SELF JOIN
SELF JOIN используется для соединения таблицы самой с собой.
Пример
SELECT e1.name AS employee, e2.name AS manager
FROM employees e1
JOIN employees e2 ON e1.manager_id = e2.id;