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