SQL | Присоединиться (декартово соединение и самосоединение)
Опубликовано: 19 Августа, 2021
SQL | СОЕДИНЕНИЕ (внутреннее, левое, правое и полное присоединение)
В этой статье мы обсудим оставшиеся два СОЕДИНЕНИЯ:
- КАРТЗИАНСКОЕ СОЕДИНЕНИЕ
- САМОПРИСОЕДИНЕНИЕ
Рассмотрим две таблицы ниже:
СтудентКурс
- CARTESIAN JOIN : CARTESIAN JOIN также известен как CROSS JOIN. В CARTESIAN JOIN каждая строка одной таблицы соединяется с каждой строкой другой таблицы. Обычно это происходит, когда соответствующий столбец или условие WHERE не указаны.
- При отсутствии условия WHERE CARTESIAN JOIN будет вести себя как CARTESIAN PRODUCT. то есть количество строк в наборе результатов является произведением количества строк в двух таблицах.
- При наличии условия WHERE это JOIN будет работать как INNER JOIN.
- Вообще говоря, перекрестное соединение похоже на внутреннее соединение, где условие соединения всегда будет оцениваться как True.
Синтаксис:
ВЫБЕРИТЕ table1.column1, table1.column2, table2.column1 ... ИЗ table1 CROSS JOIN table2; table1 : Первая таблица. table2 : Вторая таблица
Примеры запросов (CARTESIAN JOIN):
- В приведенном ниже запросе мы выберем ИМЯ и возраст из таблицы Student и COURSE_ID из таблицы StudentCourse. В выходных данных вы можете видеть, что каждая строка таблицы Student объединена с каждой строкой таблицы StudentCourse. Общее количество строк в наборе результатов = 4 * 4 = 16.
ВЫБЕРИТЕ Student.NAME, Student.AGE, StudentCourse.COURSE_ID ОТ Студента CROSS JOIN StudentCourse;
Выход :
- SELF JOIN : как следует из названия, в SELF JOIN таблица присоединяется к самой себе. То есть каждая строка таблицы соединяется сама с собой и со всеми другими строками в зависимости от некоторых условий. Другими словами, мы можем сказать, что это соединение двух копий одной и той же таблицы. Синтаксис:
ВЫБЕРИТЕ a.coulmn1, b.column2 FROM имя_таблицы a, имя_таблицы b ГДЕ some_condition; table_name : Имя таблицы. some_condition : условие выбора строк.
Примеры запросов (САМОСОЕДИНЕНИЕ):
ВЫБЕРИТЕ a.ROLL_NO, b.NAME ОТ Студент a, Студент b ГДЕ a.ROLL_NO <b.ROLL_NO;
Выход:
Автор статьи - Харш Агарвал. Если вам нравится GeeksforGeeks, и вы хотели бы внести свой вклад, вы также можете написать статью с помощью provide.geeksforgeeks.org или отправить ее по электронной почте на deposit@geeksforgeeks.org. Посмотрите, как ваша статья появляется на главной странице GeeksforGeeks, и помогите другим гикам.
Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по теме, обсужденной выше.