← Назад ко всем вопросам

В чем разница между CROSS JOIN и FULL JOIN

1️⃣ Как кратко ответить

CROSS JOIN возвращает декартово произведение двух таблиц, создавая комбинации всех строк из первой таблицы с каждой строкой из второй. FULL JOIN объединяет результаты LEFT JOIN и RIGHT JOIN, возвращая все строки из обеих таблиц, заполняя отсутствующие значения NULL.

2️⃣ Подробное объяснение темы

CROSS JOIN и FULL JOIN — это два типа соединений в SQL, которые используются для объединения данных из двух таблиц, но они работают по-разному и применяются в различных сценариях.

CROSS JOIN

CROSS JOIN, также известный как декартово произведение, создает комбинации всех строк из первой таблицы с каждой строкой из второй таблицы. Это означает, что если у вас есть таблица A с m строками и таблица B с n строками, результатом CROSS JOIN будет таблица с m * n строками.

Пример:

Предположим, у нас есть две таблицы:

Таблица A:

ID Name
1 John
2 Jane

Таблица B:

ID Product
1 Book
2 Pen

Запрос:

SELECT A.Name, B.Product
FROM A
CROSS JOIN B;

Результат:

Name Product
John Book
John Pen
Jane Book
Jane Pen

Каждая строка из таблицы A соединяется с каждой строкой из таблицы B.

FULL JOIN

FULL JOIN, или FULL OUTER JOIN, объединяет результаты LEFT JOIN и RIGHT JOIN. Он возвращает все строки из обеих таблиц, заполняя отсутствующие значения NULL. Это полезно, когда нужно получить полную картину данных из обеих таблиц, даже если некоторые строки не имеют соответствий.

Пример:

Предположим, у нас есть две таблицы:

Таблица C:

ID Name
1 John
2 Jane
3 Alice

Таблица D:

ID Product
2 Book
3 Pen
4 Pencil

Запрос:

SELECT C.ID, C.Name, D.Product
FROM C
FULL JOIN D ON C.ID = D.ID;

Результат:

ID Name Product
1 John NULL
2 Jane Book
3 Alice Pen
4 NULL Pencil

FULL JOIN возвращает все строки из обеих таблиц. Если строка из одной таблицы не имеет соответствия в другой, то в результирующей таблице будут NULL значения.

Заключение

CROSS JOIN используется, когда необходимо создать все возможные комбинации строк из двух таблиц, что может быть полезно в аналитических задачах. FULL JOIN применяется, когда нужно объединить данные из двух таблиц, сохраняя все строки из обеих, даже если некоторые из них не имеют соответствий.

Тема: Базы данных и SQL
Стадия: Tech

🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!

Твои заметки