Предложение SQL CROSS JOIN используется для объединения строк из двух или более таблиц на основе связанного столбца между ними. Перекрестные соединения SQL используются для присоединения к таблице без условия, при котором все записи первой таблицы идут со всеми записями второй таблицы.
Перекрестное соединение также называется декартовым произведением .
В отличие от INNER JOIN или LEFT JOIN , перекрестное соединение не устанавливает отношения между соединенными таблицами. Когда каждая строка первой таблицы объединяется с каждой строкой из второй таблицы, это называется декартовым соединением или перекрестным соединением.
SQL CROSS Пример JOIN
CROSS JOIN объединил каждую строку из первой таблицы (T1) с каждой строкой из второй таблицы (T2).
Другими словами, перекрестное соединение возвращает декартово произведение строк из обеих таблиц. Количество строк в декартовом произведении является произведением количества строк в каждой задействованной таблице.
Допустим, у нас есть две таблицы A и B.
Следующие ниже операторы выполняют перекрестное соединение и производят декартово произведение строк из таблиц A и B.
SELECT * FROM A JOIN B;
SELECT * FROM AINNER JOIN B;
SELECT * FROM ACROSS JOIN B;
SELECT * FROM A , B;
Предположим, таблица A имеет N строк, а таблица B имеет M строк, тогда CROSS JOIN этих двух таблиц даст набор результатов который содержит N x M строк.
Представьте, что если у вас есть третья таблица C с K строками, результат предложения CROSS JOIN этих трех таблиц будут содержать N x M x K строк, которые могут быть огромными. Вот почему вам нужно быть очень осторожным при использовании предложения CROSS JOIN .
Вы используете предложения INNER JOIN и LEFT JOIN чаще, чем предложения CROSS JOIN . Однако вы найдете предложение CROSS JOIN очень полезным в некоторых случаях использования.
Сходство между INNER JOIN и CROSS JOIN
Если условие используется с CROSS JOIN , оно будет вести себя как INNER JOIN .
NOTE:
Если условие Where не используется с CROSS JOIN, оно будет вести себя как декартово произведение.
Синтаксис перекрестного соединения
SELECT COLUMNS_NAME FROM TABLE_1 CROSS JOIN TABLE_2;
- В приведенном выше синтаксис, COLUMNS_NAME — это имя столбцов, к которым пользователь хочет присоединиться.
- Table_1 и Table_2 — имена таблиц.
Как вы можете видеть выше, в таблице 1 одна строка будет соответствовать всем строкам таблицы 2.
ПОКАЗАТЬ КРЕСТНОЕ СОЕДИНЕНИЕ БЕЗ ГДЕ УСЛОВИЯ
См. следующий запрос.
Выберите * из СТУДЕНТ КРОСС ПРИСОЕДИНЯЕТСЯ К КУРСУ;
Вывод:
Вы также можете получить этот результат без использования ключевого слова CROSS JOIN.
См. Следующий запрос.
Выбрать * от СТУДЕНТ, КУРС;
Вывод
Другие примеры:
Пользователи также могут выбирать дополнительные столбцы; не все столбцы необходимы для перекрестного соединения.
См. следующий запрос.
Выберите student.roll_no, student.name, course.course из курса Student CROSS JOIN;
См. результат.
ПОКАЗАТЬ КРЕСТНОЕ СОЕДИНЕНИЕ С ИСПОЛЬЗОВАНИЕМ ГДЕ УСЛОВИЯ
См. таблицу ниже.
Таблица_1: Сотрудник
Emp_id | Emp_name | Город | Штат | Зарплата |
101 | Rohit | Патна | Бихар | 30000 |
201 | Шивам | Джаландхар | Punjab | 20000 |
301 | Каран | Аллахабад | Уттар-Прадеш | 40000 |
401 | Сурадж | Калькутта | Западная Бенгалия | 60000 |
501 | Акаш | Визаг | Андхра-Прадеш | 70000 |
Таблица_2: Отдел
Dept_no | Emp_id |
123 | 301 |
214 | 401 |
125 | 505 |
См. Следующий запрос.
Выберите * из Employee CROSS JOIN Department, где Employee.emp_id = Department.emp_id;
См. Вывод.
Как упоминалось выше, CROSS JOIN аналогичен INNER JOIN, если используется с условием where.
Дополнительная информация
Предположим, есть m строк в таблице 1 и n строк в таблице 2
Тогда общее количество сформированных строк будет (m*n)
В приведенном выше примере четыре строки в таблицах учеников и три строки в таблицах курса.
Таким образом, общее количество сформированных строк равно 12.
Это также известно как количество элементов.
Наконец, пример SQL CROSS JOIN завершен.