Назад к вопросам
Junior
66
questionbank
Какие методы соединения (join) в SQL вы знаете?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
INNER JOIN(или простоJOIN) - возвращает строки, когда есть совпадения в обеих таблицах.LEFT JOIN(илиLEFT OUTER JOIN) - возвращает все строки из левой таблицы и совпадающие строки из правой таблицы. Если совпадений нет, возвращаетNULLдля столбцов из правой таблицы.RIGHT JOIN(илиRIGHT OUTER JOIN) - возвращает все строки из правой таблицы и совпадающие строки из левой таблицы. Если совпадений нет, возвращаетNULLдля столбцов из левой таблицы.FULL OUTER JOIN(илиFULL JOIN) - возвращает все строки, когда есть совпадение в одной из таблиц. Возвращает все строки из обеих таблиц, заполняяNULLв отсутствие совпадений.CROSS JOIN- Декартово произведение двух таблиц. Каждая строка из первой таблицы объединяется с каждой строкой из второй таблицы.SELF JOIN- Соединение таблицы с самой собой. Используется для сравнения строк внутри одной таблицы.
Пример INNER JOIN:
// Выбираем имя клиента и название заказа
SELECT c.customer_name, o.order_name
FROM customers c // Таблица клиентов
INNER JOIN orders o ON c.customer_id = o.customer_id; // Соединяем по customer_id
Пример LEFT JOIN:
// Выбираем имя клиента и название заказа (если есть)
SELECT c.customer_name, o.order_name
FROM customers c // Таблица клиентов
LEFT JOIN orders o ON c.customer_id = o.customer_id; // Все клиенты, даже без заказов
Пример RIGHT JOIN:
// Выбираем имя клиента (если есть) и название заказа
SELECT c.customer_name, o.order_name
FROM customers c // Таблица клиентов
RIGHT JOIN orders o ON c.customer_id = o.customer_id; // Все заказы, даже без клиентов
Пример FULL OUTER JOIN:
// Выбираем всех клиентов и все заказы
SELECT c.customer_name, o.order_name
FROM customers c // Таблица клиентов
FULL OUTER JOIN orders o ON c.customer_id = o.customer_id; // Все клиенты и все заказы
Пример CROSS JOIN:
// Каждая машина с каждым цветом
SELECT car.model, color.name
FROM cars car
CROSS JOIN colors color;
Пример SELF JOIN:
// Находим сотрудников, работающих в одном отделе с другим сотрудником
SELECT emp1.name, emp2.name, emp1.department
FROM employees emp1
JOIN employees emp2 ON emp1.department = emp2.department AND emp1.id <> emp2.id;