Разное

Join left join right: В чем разница между INNER, LEFT и RIGHT JOIN?

В чем разница между INNER, LEFT и RIGHT JOIN?

В данной статье я раскрою разницу между SQL-запросами INNER, LEFT и RIGHT JOIN. Здесь описываются базовые случаи, для каждой конкретной платформы (MySQL, MSSQL, Oracle и прочих) могут быть свои нюансы.

INNER JOIN

Возвращаются все записи из таблиц table_01 и table_02, связанные посредством primary/foreign ключей, и соответствующие условию WHERE для таблицы table_01. Если в какой-либо из таблиц отсутствует запись, соответствующая соседней, то в выдачу такая пара включена не будет. Иными словами, выдадутся только те записи, которые есть и в первой, и во второй таблице. То есть выборка идет фактически по связи (ключу), выдадутся только те записи, которые связаны между собой. «Одинокие» записи, для которых нет пары в связи, выданы не будут.

SELECT * FROM table_01
INNER JOIN table_02
ON table_01.primary_key = table_02.foreign_key
WHERE table_01.column_01 = ‘value’

LEFT JOIN

Возвращаются все данные из «левой» таблицы, даже если не найдено соответствий в «правой» таблице («левая» таблица в SQL-запросе стоит левее знака равно, «правая» — правее, то есть обычная логика правой и левой руки). Иными словами, если мы присоединяем к «левой» таблице «правую», то выберутся все записи в соответствии с условиями WHERE для левой таблицы. Если в «правой» таблице не было соответствий по ключам, они будут возвращены как NULL. Таким образом, здесь главной выступает «левая» таблица, и относительно нее идет выдача. В условии ON «левая» таблица прописывается первой по порядку (table_01), а «правая» – второй (table_02):

SELECT * FROM table_01
LEFT JOIN table_02
ON table_01.primary_key = table_02.foreign_key
WHERE table_01.column_01 = ‘value’

RIGHT JOIN

Возвращаются все данные из «правой» таблицы, даже если не найдено соответствий в «левой» таблице. То есть примерно также, как и в LEFT JOIN, только NULL вернется для полей «левой» таблицы. Грубо говоря, эта выборка ставит во главу угла правую «таблицу», относительно нее идет выдача. Обратите внимание на WHERE в следующем примере, условие выборки затрагивает «правую» таблицу:

SELECT * FROM table_01
RIGHT JOIN table_02
ON table_01. primary_key = table_02.foreign_key
WHERE table_02.column_01 = ‘value’

Таким образом, мы разложили по полочкам, в чем отличие INNER, LEFT и RIGHT JOIN. Разумеется, представленная выше информация не нова, но она может быть полезна начинающим программистам, которые часто путаются в типах запросов.

mysql

Операции LEFT JOIN, RIGHT JOIN (Microsoft Access SQL)



  • Чтение занимает 2 мин

В этой статье

Область применения: Access 2013, Office 2013Applies to: Access 2013, Office 2013

Объединяют записи исходных таблиц при использовании в любом предложении FROM. Combines source-table records when used in any FROM clause.

СинтаксисSyntax

FROM таблица1 [ LEFT | RIGHT ] JOIN таблица2 ON таблица1.поле1 оператор_сравнения таблица2.поле2FROM table1 [ LEFT | RIGHT ] JOIN table2 ON table1.field1 compopr table2.field2

Операции LEFT JOIN и RIGHT JOIN состоят из следующих элементов:The LEFT JOIN and RIGHT JOIN operations have these parts:

ЧастьPart

ОписаниеDescription

таблица1, таблица2table1, table2

Имена таблиц, содержащих объединяемые записи.The names of the tables from which records are combined.

поле1, поле2field1, field2

Имена объединяемых полей.The names of the fields that are joined. Поля должны относиться к одному типу данных и содержать данные одного вида. Однако имена этих полей могут быть разными.The fields must be of the same data type and contain the same kind of data, but they do not need to have the same name.

оператор_сравненияcompopr

Любой оператор сравнения: «=,» «<,» «>,» «<=,» «>=,» или «<>.»Any relational comparison operator: «=,» «<,» «>,» «<=,» «>=,» or «<>.»

ПримечанияRemarks

Операция LEFT JOIN создает левое внешнее соединение.Use a LEFT JOIN operation to create a left outer join. С помощью левого внешнего соединения выбираются все записи первой (левой) таблицы, даже если они не соответствуют записям во второй (правой) таблице.Left outer joins include all of the records from the first (left) of two tables, even if there are no matching values for records in the second (right) table.

Операция RIGHT JOIN создает правое внешнее соединение.Use a RIGHT JOIN operation to create a right outer join. С помощью правого внешнего соединения выбираются все записи второй (правой) таблицы, даже если они не соответствуют записям в первой (левой) таблице.Right outer joins include all of the records from the second (right) of two tables, even if there are no matching values for records in the first (left) table.

Например, в случае с таблицами «Отделы» (левая) и «Сотрудники» (правая) можно воспользоваться операцией LEFT JOIN для выбора всех отделов (включая те, в которых нет сотрудников).For example, you could use LEFT JOIN with the Departments (left) and Employees (right) tables to select all departments, including those that have no employees assigned to them. Чтобы выбрать всех сотрудников (в том числе и не закрепленных за каким-либо отделом), используйте RIGHT JOIN.To select all employees, including those who are not assigned to a department, you would use RIGHT JOIN.

В следующем примере показано, как можно объединить таблицы Categories и Products по полю CategoryID.The following example shows how you could join the Categories and Products tables on the CategoryID field. Результат запроса представляет собой список категорий, включая те, которые не содержат товаров.The query produces a list of all categories, including those that contain no products:

SELECT CategoryName, 
ProductName 
FROM Categories LEFT JOIN Products 
ON Categories.CategoryID = Products.CategoryID;

В этом примере CategoryID является объединенным полем, но оно не включается в результаты запроса, поскольку не указано в инструкции SELECT.In this example, CategoryID is the joined field, but it is not included in the query results because it is not included in the SELECT statement. Чтобы включить объединенное поле в результаты запроса, укажите его имя в инструкции SELECT. В данном случае это Categories.CategoryID.To include the joined field, enter the field name in the SELECT statement — in this case, Categories.CategoryID.

Примечание

  • Чтобы создать запрос, результатом которого являются только те записи, для которых совпадают данные в объединенных полях, воспользуйтесь операцией INNER JOIN. To create a query that includes only records in which the data in the joined fields is the same, use an INNER JOIN operation.
  • Операции LEFT JOIN и RIGHT JOIN могут быть вложены в операцию INNER JOIN, но операция INNER JOIN не может быть вложена в операцию LEFT JOIN или RIGHT JOIN.A LEFT JOIN or a RIGHT JOIN can be nested inside an INNER JOIN, but an INNER JOIN cannot be nested inside a LEFT JOIN or a RIGHT JOIN. Подробные сведения о вложении объединений можно найти в статье, посвященной операции INNER JOIN.See the discussion of nesting in the INNER JOIN topic to see how to nest joins within other joins.
  • Вы можете связать несколько предложений ON.You can link multiple ON clauses. Сведения о связывании предложений см. в статье, посвященной операции INNER JOIN.See the discussion of clause linking in the INNER JOIN topic to see how this is done.
  • При попытке связи полей, содержащих данные типа Memo или объекты OLE, возникнет ошибка.If you try to join fields containing Memo or OLE Object data, an error occurs.

ПримерExample

В этом примере:This example sets

  • Предполагается существование гипотетических полей Department Name (Название отдела) и Department ID (Код отдела) в таблице Employees (Сотрудники).Assumes the existence of hypothetical Department Name and Department ID fields in an Employees table. Обратите внимание, что эти поля на самом деле не существуют в таблице Employees (Сотрудники) базы данных Northwind.Note that this field does not actually exist in the Northwind database Employees table.

  • Выбираются все отделы, в том числе без сотрудников.Selects all departments, including those without employees.

  • Выполняется вызов процедуры EnumFields, которую можно найти в примере для инструкции SELECT.It calls the EnumFields procedure, which you can find in the SELECT statement example.

    Sub LeftRightJoinX() 
     
        Dim dbs As Database, rst As Recordset 
     
        ' Modify this line to include the path to Northwind 
        ' on your computer.  
        Set dbs = OpenDatabase("Northwind.mdb") 
         
        ' Select all departments, including those  
        ' without employees. 
        Set rst = dbs.OpenRecordset _ 
            ("SELECT [Department Name], " _ 
            & "FirstName & Chr(32) & LastName AS Name " _ 
            & "FROM Departments LEFT JOIN Employees " _ 
            & "ON Departments.[Department ID] = " _ 
            & "Employees.[Department ID] " _ 
            & "ORDER BY [Department Name];") 
         
        ' Populate the Recordset. 
        rst.MoveLast 
         
        ' Call EnumFields to print the contents of the  
        ' Recordset. Pass the Recordset object and desired 
        ' field width. 
        EnumFields rst, 20 
     
        dbs.Close 
     
    End Sub



SQL-запросы. В чем разница между INNER JOIN, RIGHT JOIN, LEFT JOIN?

org/ListItem»>



– Автор:

Игорь (Администратор)



В рамках сегодняшней статьи я расскажу вам в чем разница между INNER JOIN, RIGHT JOIN и LEFT JOIN, приведу подробные примеры, а так же предоставлю некоторые пояснения.

Без баз данных сегодня не обходится практически ни одно приложение. И в этом нет ничего странного, так как наличие пользовательской информации требует специальных хранилищ. Кто-то пытается реализовывать их собственными силами, используя, например, файлы. А кто-то использует уже готовые решения, по типу MySQL. Если в первом случае все задачи ложатся на плечи их создателей, то во втором авторам программных продуктов предоставляется универсальный язык для построения запросов под названием SQL

Однако, специфика использования SQL запросов может оказаться простой не для всех. Поэтому попробуем поэтапно посмотреть их на практике.

Допустим, что у вас существует две таблицы — авторы и программы. Сразу оговоримся, что не всегда известно какие программы кем написаны (обычно мелкие утилиты и инструменты можно встретить без указания авторства, к примеру, небольшие скрипты), а так же не все авторы еще что-либо написали (т.е. допустим, автор оставил заявку, но еще не приложил свое творение). Для простоты, таблицы назовем author и util.

Таблица авторов (author) будет выглядеть следующим образом:




idname
1Вася
2Коля
3Петя

Где id — это идентификатор автора, а name — это, собственно, имя автора

Таблица программ (util) будет выглядеть следующим образом:

Операции LEFT JOIN, RIGHT JOIN

Объединяет записи исходной таблицы при использовании в любом предложении FROM.

Синтаксис

ИЗ table1 [LEFT | ВПРАВО] ПРИСОЕДИНИТЬСЯ table2
ON table1.field1 compopr table2.field2

Операции LEFT JOIN и RIGHT JOIN имеют следующие части:

Часть

Описание

стол1 , стол2

Имена таблиц, из которых объединяются записи.

поле1 , поле2

Имена объединяемых полей. Поля должны иметь один и тот же тип данных и содержать одинаковые данные, но не обязательно иметь одно и то же имя.

compopr

Любой оператор сравнения отношения: «=,» «<," ">,» «<=," "> =,» или «<>.«

Замечания

Используйте операцию LEFT JOIN для создания левого внешнего соединения. Левое внешнее объединение включает все записи из первой (левой) из двух таблиц, даже если нет совпадающих значений для записей во второй (правой) таблице.

Используйте операцию RIGHT JOIN, чтобы создать правое внешнее соединение. Правые внешние соединения включают все записи из второй (правой) из двух таблиц, даже если нет совпадающих значений для записей в первой (левой) таблице.

Например, вы можете использовать LEFT JOIN с таблицами «Отделы» (слева) и «Сотрудники» (справа) для выбора всех отделов, включая те, которым не назначены сотрудники. Чтобы выбрать всех сотрудников, включая тех, кто не прикреплен к отделу, вы должны использовать RIGHT JOIN.

В следующем примере показано, как можно объединить таблицы категорий и продуктов в поле CategoryID. Запрос выдает список всех категорий, в том числе тех, которые не содержат товаров:

ВЫБЕРИТЕ CategoryName, ProductName из категорий ВЛЕВО ПРИСОЕДИНЯЙТЕСЬ к продуктам по категориям. CategoryID = Products.CategoryID;

В этом примере CategoryID является объединенным полем, но оно не включается в результаты запроса, потому что не включается в оператор SELECT. Чтобы включить объединенное поле, введите имя поля в операторе SELECT — в данном случае Categories.CategoryID.

Чтобы создать запрос, включающий только записи, в которых данные в объединенных полях совпадают, используйте операцию INNER JOIN.

  • LEFT JOIN или RIGHT JOIN могут быть вложены внутри INNER JOIN, но INNER JOIN не могут быть вложены в LEFT JOIN или RIGHT JOIN.См. Обсуждение вложения в теме ВНУТРЕННЕЕ СОЕДИНЕНИЕ, чтобы узнать, как вкладывать объединения в другие объединения.

  • Вы можете связать несколько предложений ON. См. Обсуждение связывания предложений в разделе INNER JOIN, чтобы узнать, как это делается.

Если вы попытаетесь объединить поля, содержащие данные Memo или OLE Object, возникает ошибка.

операций LEFT JOIN, RIGHT JOIN (Microsoft Access SQL)

  • 2 минуты на чтение

В этой статье

Относится к : Access 2013, Office 2013

Объединяет записи исходной таблицы при использовании в любом предложении FROM.

Синтаксис

ИЗ таблица1 [LEFT | ВПРАВО] СОЕДИНЯЙТЕСЬ table2 ON table1.field1 compopr table2.field2

Операции LEFT JOIN и RIGHT JOIN имеют следующие части:

Деталь

Описание

таблица1 , таблица2

Имена таблиц, из которых объединяются записи.

поле1 , поле2

Имена объединяемых полей. Поля должны иметь один и тот же тип данных и содержать одинаковые данные, но не обязательно иметь одно и то же имя.

состав

Любой оператор сравнения отношений: «=,» «<," ">,» «<=," "> =,» или «<>.»

Примечания

Используйте операцию LEFT JOIN для создания левого внешнего соединения. Левое внешнее объединение включает все записи из первой (левой) из двух таблиц, даже если нет совпадающих значений для записей во второй (правой) таблице.

Используйте операцию RIGHT JOIN, чтобы создать правое внешнее соединение. Правые внешние соединения включают все записи из второй (правой) из двух таблиц, даже если нет совпадающих значений для записей в первой (левой) таблице.

Например, вы можете использовать LEFT JOIN с таблицами «Отделы» (слева) и «Сотрудники» (справа), чтобы выбрать все отделы, включая те, которым не назначены сотрудники.Чтобы выбрать всех сотрудников, включая тех, кто не прикреплен к отделу, вы должны использовать RIGHT JOIN.

В следующем примере показано, как можно объединить таблицы категорий и продуктов в поле CategoryID. Запрос выдает список всех категорий, в том числе тех, которые не содержат товаров:

  ВЫБРАТЬ Имя категории,
Наименование товара
ИЗ Категории СЛЕВА ПРИСОЕДИНИТЬСЯ Продукты
ON Categories.CategoryID = Products. CategoryID;
  

В этом примере CategoryID является объединенным полем, но оно не включается в результаты запроса, поскольку не включается в оператор SELECT.Чтобы включить объединенное поле, введите имя поля в операторе SELECT — в данном случае Categories.CategoryID.

Примечание

  • Чтобы создать запрос, включающий только записи, в которых данные в объединенных полях совпадают, используйте операцию INNER JOIN.
  • LEFT JOIN или RIGHT JOIN могут быть вложены во INNER JOIN, но INNER JOIN не могут быть вложены в LEFT JOIN или RIGHT JOIN. См. Обсуждение вложения в теме ВНУТРЕННЕЕ СОЕДИНЕНИЕ, чтобы узнать, как вкладывать объединения в другие объединения.
  • Вы можете связать несколько предложений ON. См. Обсуждение связывания предложений в разделе INNER JOIN, чтобы узнать, как это делается.
  • Если вы попытаетесь объединить поля, содержащие данные Memo или OLE Object, возникает ошибка.

Пример

Этот пример:

  • Предполагает существование гипотетических полей «Название отдела» и «Идентификатор отдела» в таблице «Сотрудники». Обратите внимание, что эти поля фактически не существуют в таблице «Сотрудники» базы данных Northwind.

  • Выбирает все отделы, включая те, в которых нет сотрудников.

  • Вызывает процедуру EnumFields, которую вы можете найти в примере оператора SELECT.

  Sub LeftRightJoinX ()
     
        Dim dbs как база данных, сначала как набор записей
     
        'Измените эту строку, чтобы включить путь к Northwind
        ' на твоем компьютере.
        Установите dbs = OpenDatabase ("Northwind.mdb")
         
        'Выбрать все отделы, в том числе
        'без сотрудников.Установите rst = dbs.OpenRecordset _
            ("ВЫБРАТЬ [Название отдела]," _
            & "Имя & Chr (32) & Фамилия AS Имя" _
            & "ОТДЕЛЕНИЯ УСТАЛИ ПРИСОЕДИНЯТЬСЯ к сотрудникам" _
            & "ON Департаменты. [ИД отдела] =" _
            & "Сотрудники. [ID отдела]" _
            & "ЗАКАЗАТЬ [Название отдела];")
         
        'Заполните набор записей. 
        rst.MoveLast
         
        'Вызвать EnumFields, чтобы распечатать содержимое
        'Набор записей.Передайте объект Recordset и желаемый
        ширина поля.
        EnumFields первая, 20
     
        dbs.Close
     
    Конец подписки
  

SQL Join — внутреннее, левое, правое и полное объединение

1. Соединяется в SQL

В этом руководстве по SQL (язык структурированных запросов) мы увидим соединение SQL. В этой статье о соединении SQL мы обсудим внутреннее соединение SQL, левое соединение SQL, правое соединение SQL, полные соединения SQL. Кроме того, мы также увидим запрос соединения в примере SQL и SQL Join.Наряду с этим мы обсудим декартово соединение и самосоединение в SQL.
Итак, приступим к SQL Join.

Соединение SQL — внутреннее, левое, правое и полное соединение

2. Что такое соединение SQL?

SQL be as part of clause объединяет столбцы из одной или дополнительных таблиц в реляционной базе данных. Он создает набор, который будет сохранен как таблица или использован, потому что он есть. Соединение SQL может быть средством объединения столбцов из одной (самосоединение) или дополнительных таблиц с использованием значений, общих для всех.Стандарт ANSI определяет 5 форм JOIN: INNER, LEFT OUTER, RIGHT OUTER, FULL OUTER и CROSS. В особом случае таблица (базовая таблица, представление или объединенная таблица) присоединяется к самой себе во время самосоединения.
Знаете ли вы о типах данных SQL

3. Внутреннее, левое, правое и полное объединение в SQL

SQL be part, оператор of используется для смешивания данных или строк из 2 или множества таблиц, поддерживающих общее поле между ними. Различных видов объединений:

  • ВНУТРЕННЕЕ СОЕДИНЕНИЕ
  • ЛЕВОЕ СОЕДИНЕНИЕ
  • ПРАВОЕ СОЕДИНЕНИЕ
  • ПОЛНОЕ СОЕДИНЕНИЕ

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

Пример соединения SQL

Студент

SQL Join — курс для студентов

Студенческий курс

а. SQL INNER Join

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

Внутреннее соединение SQL

Синтаксис для внутреннего соединения:

 ВЫБРАТЬ table1.column1, table1.column2, table2.column1, ....ИЗ table1
INNER объединить table2
ON table1.matching_column = table2.matching_column; 

table1: первая таблица.
таблица2: вторая таблица
сопоставление_столбца: столбец, общий для каждой таблицы.
Пример запросов на соединение (INNER JOIN)

 SELECT StudentCourse.COURSE_ID, Student.NAME, Student.AGE FROM Student
INNER присоединиться к StudentCourse
ВКЛ Student.ROLL_NO = StudentCourse. ROLL_NO; 

Выход:

Соединение SQL — вывод

г.SQL ЛЕВО Соединить

Это левое соединение SQL возвращает все строки таблицы с левой стороны, которые являются частью и совпадают с строками для таблицы в правом аспекте соединения. Строки, для которых нет соответствующей строки в правом аспекте, набор результатов может содержать null. LEFT быть частью также известно как LEFT OUTER join.
Давайте пересмотрим систему баз данных SQL RDBMS
Синтаксис для SQL Left Join:

 ВЫБЕРИТЕ table1.column1, table1.column2, table2.column1 ,....
ИЗ table1
LEFT быть частью table2
ON table1.matching_column = table2.matching_column; 

table1: первая таблица.
таблица2: вторая таблица
сопоставление_столбца: столбец, общий для обеих таблиц.
Примечание: мы также можем использовать соединение LEFT OUTER, а не соединение LEFT, все они одинаковы.

Соединение SQL — Левое соединение SQL

Пример запросов на соединение (LEFT JOIN):

 ВЫБЕРИТЕ Student.NAME, StudentCourse.COURSE_ID
ОТ Студента
ВЛЕВО быть частью StudentCourse
НА StudentCourse.ROLL_NO = Student.ROLL_NO; 

Выход:

Запрос соединения в SQL Левое соединение

г. SQL RIGHT Join

RIGHT JOIN в SQL аналогичен LEFT JOIN. Это соединение возвращает все строки таблицы в соответствующем аспекте соединения и соответствующие строки для таблицы в левом аспекте того, что он является частью. Строки, для которых нет соответствующей строки в левом аспекте, набор результатов может содержать null.ПРАВИЛЬНОЕ соединение дополнительно называется ПРАВИЛЬНЫМ ВНЕШНИМ соединением.
Синтаксис правого соединения:

 ВЫБРАТЬ table1.column1, table1.column2, table2.column1, ....
ИЗ table1
RIGHT соединить table2
ON table1.matching_column = table2.matching_column; 

т вл1: первая таблица.
таблица2: вторая таблица
сопоставление_столбца: столбец, общий для каждой из таблиц.
Знаете ли вы термин Выражения SQL
Примечание: мы можем также использовать RIGHT OUTER как часть вместо RIGHT соединения, все они одинаковы.

Правое соединение SQL

Пример запросов на соединение (RIGHT JOIN):

 ВЫБЕРИТЕ Student.NAME, StudentCourse.COURSE_ID
ОТ Студента
ПРАВО присоединиться к StudentCourse
НА StudentCourse.ROLL_NO = Student.ROLL_NO; 

Выход правого соединения:

Запрос правого соединения SQL

г. ПОЛНОЕ соединение

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

 ВЫБРАТЬ table1. column1, table1.column2, table2.column1, ....
ИЗ table1
ПОЛНАЯ таблица соединений2
ON table1.matching_column = table2.matching_column; 

table1: первая таблица.
таблица2: вторая таблица
сопоставление_столбца: столбец, общий для каждой таблицы.
Давайте пересмотрим SQL Create Database
Пример запросов на соединение (FULL JOIN):

Полное соединение SQL

 ВЫБРАТЬ Студент.ИМЯ, StudentCourse.COURSE_ID
ОТ Студента
ПОЛНОСТЬЮ быть частью StudentCourse
НА StudentCourse.ROLL_NO = Student.ROLL_NO; 

Вывод полных соединений SQL:

Полное соединение SQL

4. Декартово соединение и самосоединение

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

, пример 2 — соединение SQL

Студенческий курс

Самостоятельное соединение SQL

Декартово соединение в SQL также называется CROSS JOIN. В декартовом соединении каждая строка одной таблицы соединяется с каждой строкой другой таблицы. Обычно это происходит в соответствующем столбце или если условие не указано.
В отсутствие условия where декартово соединение может вести себя как декартово соединение. то есть количество строк в наборе результатов равно произведению количества строк в двух таблицах.
При наличии условия where эта часть может работать как ВНУТРЕННЯЯ часть.
Вообще говоря, перекрестное соединение сопоставимо с внутренним элементом, в котором условие соединения всегда может быть оценено как True
Синтаксис декартового соединения:

 ВЫБРАТЬ таблицу1.column1, table1.column2, table2.column1 ...
ИЗ table1
CROSS join table2; 

table1: первая таблица.
table2: Вторая таблица
Пример запросов на соединение (CARTESIAN JOIN):
В приведенном ниже запросе мы выберем NAME и Age из таблицы Student и COURSE_ID из таблицы StudentCourse. внутри выходных данных вы увидите, что каждая} строка таблицы Student объединена с каждой строкой таблицы StudentCourse. общее количество строк в наборе результатов = 4 * 4 = 16.

 ВЫБРАТЬ Студент.ИМЯ, Student.AGE, StudentCourse.COURSE_ID
ОТ Студента
CROSS присоединиться к StudentCourse; 

Выход:

Пример декартового соединения

SELF JOIN: Поскольку имя означает, что в SELF быть частью таблицы присоединяется к самой себе. То есть каждая строка таблицы соединяется сама с собой и каждая отдельная строка в зависимости от некоторых условий. Другими словами, мы скажем, что это часть двух копий одной и той же таблицы.
Синтаксис самостоятельного соединения:

 ВЫБРАТЬ a.coulmn1, b.column2
FROM имя_таблицы a, имя_таблицы b
ГДЕ some_condition; 

table_name: Имя таблицы.
some_condition: условие для выбора строк.
Примеры запросов (САМОСОЕДИНЕНИЕ):

 ВЫБЕРИТЕ a.ROLL_NO, b.NAME
ОТ Студент a, Студент b
ГДЕ a.ROLL_NO 

Выход:

запросов на самостоятельное присоединение

Итак, все это было в SQL Join. Надеюсь, вам понравится наше объяснение.

5.Вывод

В этом руководстве по SQL-соединению мы узнали о различных соединениях, доступных в SQL. Кроме того, мы обсудили внутреннее соединение SQL, левое соединение SQL, правое соединение SQL, полное соединение SQL. Наконец, мы обсудили декартово соединение и самосоединение в SQL. Тем не менее, если есть сомнения, спрашивайте во вкладке комментариев.
Для справки

SQL RIGHT JOIN vs RIGHT OUTER JOIN, несколько таблиц - с примерами

Что такое RIGHT JOIN в SQL?

RIGHT JOIN выполняет соединение, начиная со второй (самой правой) таблицы
а затем любые совпадающие первые (крайние слева) записи таблицы.RIGHT JOIN и RIGHT OUTER JOIN - это одно и то же.

Синтаксис SQL RIGHT JOIN

Общий синтаксис

ВЫБЕРИТЕ имена столбцов
  ИЗ имя-таблицы1 ПРАВИЛЬНОЕ СОЕДИНЕНИЕ имя-таблицы2
    ON имя-столбца1 = имя-столбца2
 ГДЕ условие
 

Общий синтаксис RIGHT OUTER JOIN:

ВЫБЕРИТЕ имена столбцов
  FROM имя-таблицы1 ПРАВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ имя-таблицы2
    ON имя-столбца1 = имя-столбца2
 ГДЕ условие
 

КЛИЕНТ
Идентификатор
Имя
Фамилия
Город
Страна
Телефон
ИД ЗАКАЗА
Дата заказа
Номер заказа
CustomerId
TotalAmount

Примеры SQL RIGHT JOIN

Проблема: Список клиентов, которые не разместили заказы

ВЫБЕРИТЕ TotalAmount, FirstName, LastName, City, Country
  ОТ [Заказ] ПРАВО ПРИСОЕДИНЯЙТЕСЬ К клиенту C
    ПО О. CustomerId = C.Id
ГДЕ TotalAmount ЕСТЬ NULL
 

Это возвращает клиентов, у которых при присоединении нет подходящего заказа.

Результат: 2 записи


Задача: Перечислить всех клиентов (с заказами или без) и подсчитать
заказов, которые включают коробку 2 кг с Konbu (продукт с Id = 13).

КЛИЕНТ
Идентификатор
Имя
Фамилия
Город
Страна
Телефон
ИД ЗАКАЗА
Дата заказа
Номер заказа
CustomerId
TotalAmount

Unit

ORDERITEM
Id
OrderId
ProductId
Unit
ВЫБРАТЬ ОТЛИЧИТЕЛЬНЫЙ (C.Id), Firstname, LastName, COUNT (O.Id) AS заказов
  ОТ [Заказ] O
  JOIN OrderItem I ON O.Id = I.OrderId AND I.ProductId = 13
 ПРАВО ПРИСОЕДИНЯЙТЕСЬ К клиенту C НА C.Id = O.CustomerId
 ГРУППА ПО C.Id, FirstName, LastName
 ЗАКАЗ ПО КОЛИЧЕСТВУ (O.Id)
 

Это возвращает всех клиентов, независимо от того, есть ли у них заказы или нет. Те, у которых есть заказы, мы проверяем, присутствует ли productId = 13.

Результат: 91 запись (все заказчики)

Id Имя Фамилия Заказы
1 Мария Андерс 0
3 Антонио Морено 0
6 Ханна Моос 0
36 Йоши Латимер 1
88 Паула Патента 1
85 Пол Анрио 1
11 Виктория Эшворт 2
17 Свен Оттлиб 2
20 Роланд Мендель 2
71 Jose Паваротти 4

.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *