SQL | Присоединиться (декартово соединение и самосоединение)

Опубликовано: 19 Августа, 2021

SQL | СОЕДИНЕНИЕ (внутреннее, левое, правое и полное присоединение)
В этой статье мы обсудим оставшиеся два СОЕДИНЕНИЯ:

  • КАРТЗИАНСКОЕ СОЕДИНЕНИЕ
  • САМОПРИСОЕДИНЕНИЕ

Рассмотрим две таблицы ниже:

СтудентКурс

    1. 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;
    

    Выход :

  1. 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, и помогите другим гикам.

Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по теме, обсужденной выше.