Join sql примеры: что это, как работает, виды соединений таблиц, отличия LEFT, RIGHT JOIN, операторы и синтаксис

что это, как работает, виды соединений таблиц, отличия LEFT, RIGHT JOIN, операторы и синтаксис

SQL — Simple Query Language, то есть «простой язык запросов». Его создали, чтобы работать с реляционными базами данных. В таких базах данные представлены в виде таблиц. Зависимости между несколькими таблицами задают с помощью связующих — реляционных столбцов. 

Когда запрашиваем данные из одной таблицы, работа со связующими столбцами не нужна. Но если нужно агрегировать данные из нескольких, стоит описать правила: как будут связаны строки на основе значений связующих столбцов. Тогда на помощь и приходит оператор join.

Что такое оператор join в SQL

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

Предположим, что у нас есть таблица заказов — Orders:

OrderID CustomerID OrderDate
304101 21 10-05-2021
304102 34 20-06-2021
304103 22 25-07-2021

И таблица клиентов — Customers:

CustomerID CustomerName ContactName
21 Балалайка Сервис Иван Иванов
22 Рога и копыта Семён Семёнов
23 Редиска Менеджмент Пётр Петров

Столбец CustomerID в таблице заказов соотносится со столбцом CustomerID в таблице клиентов.

То есть он — связующий двух таблиц. Чтобы узнать, когда, какой клиент и какой заказ оформил, составьте запрос:

</p>
<p>SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate </p>
<p>FROM Orders </p>
<p>JOIN Customers </p>
<p>ON Orders.CustomerID=Customers.CustomerID;</p>
<p>

Результат запроса будет выглядеть так:

OrderID CustomerName OrderDate
304101 Балалайка Сервис 10-05-2021
304103 Редиска Менеджмент 25-07-2021

Общий синтаксис оператора join:

JOIN <Название таблицы для присоединения> ON <Условие присоединения на основе связующих столбцов>

Соединять можно и больше двух таблиц: к запросу добавьте еще один оператор join. Например, в дополнение к предыдущим двум таблицам у нас есть таблица продавцов — Managers:

OrderID ManagerName ContactDate
304101 Артём Лапин 05-05-2021
304102 Егор Орлов 15-06-2021
304103 Евгений Соколов 20-07-2021

Таблица продавцов связана с таблицей заказов столбцом OrderID. Чтобы в дополнение к предыдущему запросу узнать, какой продавец обслуживал заказ, составьте следующий запрос:

&lt;/p&gt;
&lt;p&gt;SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate, Managers.ManagerName &lt;/p&gt;
&lt;p&gt;FROM Orders &lt;/p&gt;
&lt;p&gt;JOIN Customers &lt;/p&gt;
&lt;p&gt;ON Orders.CustomerID=Customers.CustomerID &lt;/p&gt;
&lt;p&gt;JOIN Managers &lt;/p&gt;
&lt;p&gt;ON Orders.
OrderId=Managers.OrderId&lt;/p&gt; &lt;p&gt;

Результат:

OrderID CustomerName OrderDate ManagerName
304101 Балалайка Сервис 10-05-2021 Артём Лапин
304103 Редиска Менеджмент 25-07-2021 Евгений Соколов

Внутреннее соединение INNER JOIN

Если использовать оператор INNER JOIN, в результат запроса попадут только те записи, для которых выполняется условие объединения. Еще одно условие — записи должны быть в обеих таблицах. В финальный результат из примера выше не попали записи с CustomerID=23 и OrderID=304102: для них нет соответствия в таблицах.

Общий синтаксис запроса INNER JOIN:

&lt;/p&gt;
&lt;p&gt;SELECT column_name(s)&lt;/p&gt;
&lt;p&gt;FROM table1&lt;/p&gt;
&lt;p&gt;INNER JOIN table2&lt;/p&gt;
&lt;p&gt;ON table1. column_name = table2.column_name;&lt;/p&gt;
&lt;p&gt;

Иллюстрация работы INNER JOIN

Слово INNER в запросе можно опускать, тогда общий синтаксис запроса будет выглядеть так:

&lt;/p&gt;
&lt;p&gt;SELECT column_name(s)&lt;/p&gt;
&lt;p&gt;FROM table1&lt;/p&gt;
&lt;p&gt;INNER JOIN table2&lt;/p&gt;
&lt;p&gt;ON table1.column_name = table2.column_name;&lt;/p&gt;
&lt;p&gt;

Внешние соединения OUTER JOIN

Если использовать внешнее соединение, то в результат запроса попадут не только записи с совпадениями в обеих таблицах, но и записи одной из таблиц целиком. Этим внешнее соединение отличается от внутреннего. 

Указание таблицы, из которой нужно выбрать все записи без фильтрации, называется направлением соединения.

LEFT OUTER JOIN / LEFT JOIN

В финальный результат такого соединения попадут все записи из левой, первой таблицы. Даже если не будет ни одного совпадения с правой. И записи из второй таблицы, для которых выполняется условие объединения.

Иллюстрация работы LEFT JOIN

Синтаксис:

&lt;/p&gt;
&lt;p&gt;SELECT column_name(s)&lt;/p&gt;
&lt;p&gt;FROM table1&lt;/p&gt;
&lt;p&gt;LEFT JOIN table2&lt;/p&gt;
&lt;p&gt;ON table1.column_name = table2.column_name;&lt;/p&gt;
&lt;p&gt;

Пример:

Таблица Orders:

OrderID CustomerID OrderDate
304101 21 10-05-2021
304102 34 20-06-2021
304103 22 25-07-2021

Таблица Customers:

CustomerID CustomerName ContactName
21 Балалайка Сервис Иван Иванов
22 Рога и копыта Семён Семёнов
23
Редиска Менеджмент
Пётр Петров

Запрос:

&lt;/p&gt;
&lt;p&gt;SELECT Orders. OrderID, Customers.CustomerName, Orders.OrderDate &lt;/p&gt;
&lt;p&gt;FROM Orders &lt;/p&gt;
&lt;p&gt;LEFT JOIN Customers &lt;/p&gt;
&lt;p&gt;ON Orders.CustomerID=Customers.CustomerID;&lt;/p&gt;
&lt;p&gt;

Результат:

OrderID CustomerName OrderDate
304101 Балалайка Сервис 10-05-2021
304102 null 20-06-2021
304103 Редиска Менеджмент 25-07-2021

RIGHT OUTER JOIN / RIGHT JOIN

В финальный результат этого соединения попадут все записи из правой, второй таблицы. Даже если не будет ни одного совпадения с левой. И записи из первой таблицы, для которых выполняется условие объединения.

Иллюстрация работы RIGHT JOIN

Синтаксис:

&lt;/p&gt;
&lt;p&gt;SELECT column_name(s)&lt;/p&gt;
&lt;p&gt;FROM table1&lt;/p&gt;
&lt;p&gt;RIGHT JOIN table2&lt;/p&gt;
&lt;p&gt;ON table1. column_name = table2.column_name;&lt;/p&gt;
&lt;p&gt;

Пример:

Таблица Orders:

OrderID CustomerID OrderDate
304101 21 10-05-2021
304102 34 20-06-2021
304103 22 25-07-2021

Таблица Customers:

CustomerID CustomerName ContactName
21 Балалайка Сервис Иван Иванов
22 Рога и копыта Семён Семёнов
23 Редиска Менеджмент Пётр Петров

Запрос:

&lt;/p&gt;
&lt;p&gt;SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate &lt;/p&gt;
&lt;p&gt;FROM Orders &lt;/p&gt;
&lt;p&gt;RIGHT JOIN Customers &lt;/p&gt;
&lt;p&gt;ON Orders. CustomerID=Customers.CustomerID;&lt;/p&gt;
&lt;p&gt;

Результат:

OrderID
CustomerName
OrderDate
304101 Балалайка Сервис 10-05-2021
null Рога и копыта null
304103 Редиска Менеджмент 25-07-2021

FULL OUTER JOIN / FULL JOIN

В финальный результат такого соединения попадут все записи из обеих таблиц. Независимо от того, выполняется условие объединения или нет.

Иллюстрация работы FULL JOIN

Синтаксис:

&lt;/p&gt;
&lt;p&gt;SELECT column_name(s)&lt;/p&gt;
&lt;p&gt;FROM table1&lt;/p&gt;
&lt;p&gt;FULL JOIN table2&lt;/p&gt;
&lt;p&gt;ON table1.column_name = table2.column_name;&lt;/p&gt;
&lt;p&gt;

Пример:

Таблица Orders

OrderID CustomerID
OrderDate
304101 21 10-05-2021
304102 34 20-06-2021
304103 22 25-07-2021

Таблица Customers:

CustomerID CustomerName ContactName
21 Балалайка Сервис Иван Иванов
22 Рога и копыта Семён Семёнов
23 Редиска Менеджмент Пётр Петров

Запрос:

&lt;/p&gt;
&lt;p&gt;SELECT Orders. OrderID, Customers.CustomerName, Orders.OrderDate &lt;/p&gt;
&lt;p&gt;FROM Orders &lt;/p&gt;
&lt;p&gt;FULL JOIN Customers &lt;/p&gt;
&lt;p&gt;ON Orders.CustomerID=Customers.CustomerID;&lt;/p&gt;
&lt;p&gt;

Результат:

OrderID CustomerName OrderDate
304101 Балалайка Сервис 10-05-2021
304102 null 20-06-2021
304103 Редиска Менеджмент 25-07-2021
null Рога и копыта null

Перекрестное соединение CROSS JOIN

Этот оператор отличается от предыдущих операторов соединения: ему не нужно задавать условие объединения (ON table1.column_name = table2.column_name). Записи в таблице с результатами — это результат объединения каждой записи из левой таблицы с записями из правой. Такое действие называют декартовым произведением. 

Иллюстрация работы CROSS JOIN

Синтаксис:

&lt;/p&gt;
&lt;p&gt;SELECT column_name(s)&lt;/p&gt;
&lt;p&gt;FROM table1&lt;/p&gt;
&lt;p&gt;CROSS JOIN table2;&lt;/p&gt;
&lt;p&gt;

Пример:

Таблица Orders:

OrderID CustomerID OrderDate
304101 21 10-05-2021
304102 34 20-06-2021
304103 22 25-07-2021

Таблица Customers:

CustomerID CustomerName ContactName
21 Балалайка Сервис Иван Иванов
22 Рога и копыта Семён Семёнов
23 Редиска Менеджмент Пётр Петров

Запрос:

&lt;/p&gt;
&lt;p&gt;SELECT Orders. OrderID, Customers.CustomerName, Orders.OrderDate &lt;/p&gt;
&lt;p&gt;FROM Orders &lt;/p&gt;
&lt;p&gt;CROSS JOIN Customers;&lt;/p&gt;
&lt;p&gt;

Результат:

OrderID CustomerName OrderDate
304101 Балалайка Сервис 10-05-2021
304101 Рога и копыта 10-05-2021
304101 Редиска Менеджмент 10-05-2021
304102 Балалайка Сервис 20-06-2021
304102 Рога и копыта 20-06-2021
304102 Редиска Менеджмент 20-06-2021
304103 Балалайка Сервис 25-07-2021
304103 Рога и копыта 25-07-2021
304103 Редиска Менеджмент 25-07-2021

Соединение SELF JOIN

Его используют, когда в запросе нужно соединить несколько записей из одной и той же таблицы.  

В SQL нет отдельного оператора, чтобы описать SELF JOIN соединения. Поэтому, чтобы описать соединения данных из одной и той же таблицы, воспользуйтесь операторами JOIN или WHERE. 

Учтите, что в одном запросе нельзя дважды использовать имя одной и той же таблицы: иначе запрос вернет ошибку. Поэтому, чтобы выполнить соединение таблицы SQL с самой собой, в запросе ей присваивают два разных временных имени — алиаса.

Синтаксис соединения SELF JOIN при использовании оператора JOIN:

&lt;/p&gt;
&lt;p&gt;SELECT column_name(s)&lt;/p&gt;
&lt;p&gt;FROM table1 a1&lt;/p&gt;
&lt;p&gt;JOIN table1 a2&lt;/p&gt;
&lt;p&gt;ON a1.column_name = a2.column_name;&lt;/p&gt;
&lt;p&gt;

Оператор JOIN может быть любым: используйте LEFT JOIN, RIGHT JOIN. Результат будет таким же, как когда объединяли две разные таблицы.

Синтаксис соединения SELF JOIN при использовании оператора WHERE:

&lt;/p&gt;
&lt;p&gt;SELECT column_name(s)&lt;/p&gt;
&lt;p&gt;FROM table1 a1, table1 a2&lt;/p&gt;
&lt;p&gt;WHERE a1. common_col_name = a2.common_col_name;&lt;/p&gt;
&lt;p&gt;

Пример:

Талица Students:

StudentID Name CourseID Duration
1 Артём 1 3
2 Пётр 2 4
1 Артём 2 4
3 Борис 3 2
2 Ирина 3 5

Запрос с оператором WHERE:

&lt;/p&gt;
&lt;p&gt;SELECT  s1.StudentID, s1.Name&lt;/p&gt;
&lt;p&gt;FROM Students AS s1, Students s2&lt;/p&gt;
&lt;p&gt;WHERE s1.StudentID = s2.StudentID&lt;/p&gt;
&lt;p&gt;AND s1.CourseID &amp;lt;&amp;gt; s2.CourseID;&lt;/p&gt;
&lt;p&gt;

Результат:

StudentID Name
1 Артём
2 Ирина
1 Артём
2 Пётр

Запрос с оператором JOIN:

&lt;/p&gt;
&lt;p&gt;SELECT  s1. StudentID, s1.Name&lt;/p&gt;
&lt;p&gt;FROM Students s1&lt;/p&gt;
&lt;p&gt;JOIN Students s2&lt;/p&gt;
&lt;p&gt;ON s1.StudentID = s2.StudentID&lt;/p&gt;
&lt;p&gt;AND s1.CourseID &amp;lt;&amp;gt; s2.CourseID&lt;/p&gt;
&lt;p&gt;GROUP BY StudentID;&lt;/p&gt;
&lt;p&gt;

Результат:

StudentID Name
1 Артём
2 Ирина

Главное о join в SQL

  • В SQL используют операторы соединения join, чтобы объединять данные из нескольких таблиц. Когда результат должен содержать только данные двух таблиц с общим ключом, применяют INNER JOIN или просто JOIN.
  • Если нужен полный список записей одной из таблиц, объединенных с данными из другой, используют операторы LEFT и RIGHT JOIN.
  • Если результат должен содержать полный список записей обеих таблиц, где некоторые записи объединены, применяют оператор FULL JOIN.
  • Если нужно декартово произведение двух таблиц, используют оператор CROSS JOIN. Хотите соединить данные из одной и той же таблицы между собой — нужен SELF JOIN.

Научитесь писать SQL-запросы на курсе «Аналитик данных» Skypro. Изучите агрегатные функции, подзапросы и WITH, JOIN, оконные функции и многое другое, а еще — решите бизнес-задачу с помощью SQL. 

Еще в программе: базовые формулы Excel, работа в Power Pivot и Power Query, Python для анализа данных. Справитесь и без опыта в IT: учим с азов, ведем до диплома и помогаем найти работу.

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

Twitter LinkedIn Facebook Адрес электронной почты

  • Статья
  • Чтение занимает 2 мин

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

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

Синтаксис

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

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

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

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

поле1, поле2

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

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

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

Операция LEFT JOIN создает левое внешнее соединение. С помощью левого внешнего соединения выбираются все записи первой (левой) таблицы, даже если они не соответствуют записям во второй (правой) таблице.

Операция RIGHT JOIN создает правое внешнее соединение. С помощью правого внешнего соединения выбираются все записи второй (правой) таблицы, даже если они не соответствуют записям в первой (левой) таблице.

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

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

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

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

Примечание

  • Чтобы создать запрос, результатом которого являются только те записи, для которых совпадают данные в объединенных полях, воспользуйтесь операцией INNER JOIN.
  • Операции LEFT JOIN и RIGHT JOIN могут быть вложены в операцию INNER JOIN, но операция INNER JOIN не может быть вложена в операцию LEFT JOIN или RIGHT JOIN. Подробные сведения о вложении объединений можно найти в статье, посвященной операции INNER JOIN.
  • Вы можете связать несколько предложений ON. Сведения о связывании предложений см. в статье, посвященной операции INNER JOIN.
  • При попытке связи полей, содержащих данные типа Memo или объекты OLE, возникнет ошибка.

Пример

В этом примере:

  • Предполагается существование гипотетических полей Department Name (Название отдела) и Department ID (Код отдела) в таблице Employees (Сотрудники). Обратите внимание, что эти поля на самом деле не существуют в таблице Employees (Сотрудники) базы данных Northwind.

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

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

    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-запросе – Пример MySQL

Три таблицы JOIN Пример SQL

Соединение трех таблиц в одном SQL-запросе может быть очень сложным, если вы плохо разбираетесь в концепции SQL Join. Соединения SQL всегда были сложными не только для новых программистов, но и для многих других, кто занимается программированием и SQL более 2-3 лет. Их достаточно, чтобы запутать кого-то в SQL JOIN, начиная от различных типов SQL JOIN, таких как соединение INNER и OUTER, внешнее соединение LEFT и RIGHT, соединение CROSS и т. д. Среди всех этих основ самое важное в соединении — это объединение нескольких таблиц. . Если вам нужны данные из нескольких таблиц в одном запросе SELECT, вам нужно использовать либо подзапрос, либо JOIN.

В большинстве случаев мы объединяем только две таблицы, такие как Employee и Department, но иногда может потребоваться объединение более двух таблиц, и популярным случаем является объединение трех таблиц в SQL.

В случае объединения трех таблиц таблица 1 связана с таблицей 2, а затем таблица 2 связана с таблицей 3. Если вы посмотрите внимательно, вы обнаружите, что таблица 2 – это объединяющая таблица, содержащая первичный ключ как из таблицы 1, так и из таблицы. 2. Как я уже сказал, может быть очень сложно понять объединение трех или более таблиц.

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

Объединение SQL также является очень популярной темой на собеседованиях по SQL, и всегда были некоторые вопросы от объединений, например, о разнице между ВНУТРЕННИМ и ВНЕШНИМ СОЕДИНЕНИЕМ, SQL-запросе с СОЕДИНЕНИЕМ, таких как отношения отдела сотрудников и разница между ЛЕВЫМ и ПРАВЫМ ВНЕШНИМ СОЕДИНЕНИЕМ и т. д. Короче говоря, это одна из самых важных тем в SQL как с точки зрения опыта, так и с точки зрения интервью.

Синтаксис JOIN для трех таблиц в SQL

Ниже приведен общий синтаксис запроса SQL для объединения трех или более таблиц. Этот SQL-запрос должен работать во всех основных реляционных базах данных, таких как MySQL, Oracle, Microsoft SQLServer, Sybase и PostgreSQL:

SELECT t1.col, t3.col
FROM table1
JOIN table2 ON 1. table первичный ключ = таблица2.внешний ключ
ПРИСОЕДИНЯЙТЕСЬ таблица3 ON table2.primarykey = table3.foreignkey


Сначала мы объединяем таблицы 1 и 2, которые создают временную таблицу с объединенными данными из таблиц 1 и 2, которая затем соединяется с таблицей 3. Эта формула может быть расширена до более чем 3 таблиц до N таблиц. Вам просто нужно убедиться, что SQL-запрос должен иметь оператор соединения N-1, чтобы присоединиться к N таблицам. для соединения двух таблиц нам требуется 1 оператор соединения, а для соединения 3 таблиц нам нужны 2 оператора соединения.

Вот хорошая диаграмма, которая также показывает, как различные типы JOIN, например. внутренние, левые внешние, правые внешние и перекрестные соединения работают в SQL:


SQL-запрос для соединения трех таблиц в MySQL

Чтобы лучше понять объединение трех таблиц в SQL-запросе , давайте рассмотрим пример. Рассмотрим популярный пример схемы Сотрудник и Отдел. В нашем случае мы использовали таблицу ссылок под названием «Реестр», которая связывает или связывает как сотрудника с отделом.

Первичный ключ таблицы «Сотрудник» (emp_id) является внешним ключом в таблице «Реестр», и аналогичным образом первичный ключ таблицы «Отдел» (dept_id) является внешним ключом в таблице «Реестр».

Кстати, единственный способ освоить SQL-соединение — делать как можно больше упражнений. Если бы вы могли решить большинство головоломок SQL из классической книги Джо Селко «Загадки SQL и ответы», 2-е издание, вы бы более уверенно справлялись с соединениями SQL, будь то две, три или четыре таблицы.

Чтобы написать SQL-запрос для печати имени сотрудника и названия отдела , нам нужно объединить 3 таблицы . Первый оператор JOIN соединит Employee и Register и создаст временную таблицу, которая будет иметь dept_id в качестве другого столбца. Теперь второй оператор JOIN соединит эту временную таблицу с таблицей отдела по dept_id, чтобы получить желаемый результат.

Вот полный пример SQL-запроса SELECT для объединения 3 таблиц, который можно расширить для объединения более 3 или N таблиц.



mysql> ВЫБРАТЬ * ИЗ Сотрудник;
+ ———+———-+———+
| emp_id | emp_name | зарплата |
+ ———+———-+———+
| 1      | Джеймс | 2000 |
| 2      | Джек     | 4000 |
| 3      | Генри | 6000 |
| 4      | Том      | 8000 |
+ ———+———-+———+
4 строки IN SET (0,00 сек)

mysql> ВЫБЕРИТЕ * ИЗ Отдел;
+ ———+————+
| dept_id | имя_отдела |
+ ———+————+
| 101     | Продажи     |
| 102     | Маркетинг |
| 103     | Финансы   |
+ ———+————+
3 ряда IN НАБОР (0,00 сек)

mysql> ВЫБРАТЬ * ИЗ Зарегистрировать;
+ ———+———+
| emp_id | dept_id |
+ ———+———+
| 1 | 101 |
| 2 | 102 |
| 3 | 103 |
| 4 | 102 |
+ ———+———+
4 строки IN SET (0,00 сек)

mysql> SELECT emp_name, dept_name 9 0 0  900 Сотрудник е
       JOIN Регистрация r ON e. emp_id=r.emp_id
       JOIN Отдел d ON r.dept_id=d.dept_id;
+ ———-+————+
| emp_name | имя_отдела |
+ ———-+————+
| Джеймс | Продажи     |
| Джек     | Маркетинг |
| Генри | Финансы   |
| Том      | Маркетинг |
+ ———-+————+
4 ряда IN НАБОР (0,01 сек)

Если вы хотите понять это еще лучше, попробуйте объединить столы шаг за шагом. Таким образом, вместо объединения 3 таблиц за один раз, сначала соедините 2 таблицы и посмотрите, как будет выглядеть таблица результатов. Это все о том, как соединить три таблицы одним SQL-запросом в реляционной базе данных.

Кстати, в этом примере SQL JOIN мы использовали ANSI SQL, и он будет работать в другой реляционной базе данных, а также в Oracle, SQL Server, Sybase, PostgreSQL и т. д. Сообщите нам, если у вас возникнут какие-либо проблемы при запуске этого 3 таблица JOIN запроса в любой другой базе данных.

Другое Вопросы к интервью по SQL статьи для подготовки

  • В чем разница между коррелированными и некоррелированными подзапросами в SQL
  • Разница между кластеризованным и некластеризованным индексом в SQL
  • Что такое ACID-свойства транзакции в базе данных
  • Когда использовать усечение вместо удаления в SQL-запросе
  • Список часто используемых команд MySQL Server
  • 10 популярных SQL-запросов из интервью


Спасибо, что прочитали эту статью до сих пор , если вам понравилась эта статья, поделитесь ею с друзьями и коллегами. Если у вас есть какие-либо вопросы, предложения или сомнения, пожалуйста, оставьте комментарий, и я постараюсь ответить на ваш вопрос.

Соединение с запросом в SQL | Как использовать запрос на соединение в SQL с примерами

В следующем разделе мы рассмотрим, что такое соединения и различные типы соединений с примерами.

Что такое соединения?

Соединения используются для получения данных из более чем одной таблицы. Чтобы объединить более одной таблицы, нам нужен хотя бы один столбец, общий для обеих таблиц. Таблицы объединяются на основе указанного условия. Используется ключевое слово «ON». В SQL существуют различные типы соединений, как показано ниже.

Различные типы соединений

  • ВНУТРЕННЕЕ соединение
  • ВЛЕВО Соединить
  • ВПРАВО Присоединиться
  • ПОЛНОЕ соединение
1. INNER Join

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

Пример:

Ниже представлена ​​диаграмма Венна внутреннего соединения.

Здесь рассмотрим таблицу A и таблицу B. Поскольку внутреннее соединение рассматривает общие строки обеих таблиц. Заштрихованная область представляет собой общие строки обеих таблиц.

Синтаксис:

SELECT * FROM TABLE_A A
INNER JOIN TABLE_B B
ON A. Common_COLUMN =B. Common_COLUMN

2. LEFT Join

Левое соединение получает все строки из левой таблицы и общие строки обеих таблиц. Возьмем пример левого соединения.

Пример:

Ниже представлена ​​диаграмма Венна левого соединения.

На приведенной ниже диаграмме таблица A слева соединена с таблицей B. Здесь учитываются все строки из таблицы A и общие строки из обеих таблиц.

Синтаксис:

SELECT * FROM TABLE_A A
LEFT JOIN TABLE_B B
ON A. Common_COLUMN =B. Common_COLUMN

3. ПРАВОЕ соединение

Правое соединение получает все строки из правой таблицы и общие строки обеих таблиц. Возьмем пример правильного соединения.

Пример:

Ниже представлена ​​диаграмма Венна правого соединения.

На приведенной ниже диаграмме таблица A соединена справа с таблицей B. Здесь рассматриваются все строки из таблицы B и общие строки из обеих таблиц.

Синтаксис:

SELECT * FROM TABLE_A A
RIGHT JOIN TABLE_B B
ON A.Common_COLUMN=B.Common_COLUMN

4. FULL получает все строки из обеих таблиц
9 4. FULL Join 0 Возьмем пример правильного соединения.

Пример:

Ниже представлена ​​диаграмма Венна соединения FULL.

Синтаксис:

SELECT * FROM TABLE_A A
FULL JOIN TABLE_B B
ON A. Common_COLUMN =B. Common_COLUMN

Результирующий набор содержит значения NULL. Нижеследующий синтаксис может использоваться для игнорирования значений NULL: –

SELECT * FROM TABLE_A A
FULL JOIN TABLE B B
ON A. Common_COLUMN =B. Common_COLUMN
ГДЕ A.Common_COLUMN IS NULL
AND A.Common_COLUMN IS NULL

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

Здесь мы обсудим использование запроса соединения с примерами:

1.
Левое соединение

левое соединение = все строки из левого таблицы + внутреннее соединение

Пример:

Давайте рассмотрим две таблицы и применим левый соединение на таблицах: —

Таблица кредит :

121213519951995199519951995139951399513513O
121213O
121213o
121213o
12121351
1212. Состояние_кредита Государственный Сумма_кредита Ap_Date
12 Открыть Ранчи 30000 02.01.2015
23 Закрыть Патна 50000 04.03.2017
31 В ожидании Калькутта 80000 07. 09.2018
43 Одобрение Электронный город 54000 10-11-2019
11 Отклонено Бангалор 43000 04.03.2017
33 Закрыть Патна

07.09.2018
44 Открыть Калькутта 67000 01-01-2020

Таблица заемщика:

Loan_no Имя_заемщика Дата_заемщика Идентификатор_банка
12 Баран 07.09.2014 А1
27 Сундар 19-06-2016 А2
43 Брауни 16-07-2019 А4
31 Блэки 07. 09.2015 А2

Запрос для получения номера_займа, статуса и даты заемщика из двух таблиц: –

Запрос:

SELECT L.LOAN_NO, L.LOAN_STATUS,B.BORROWER_DATE
FROM LOAN L LEFT JOIN BORROWER B
ON L.LOAN_NO=B.LOAN_NO

Давайте проверим вывод таблицы выше после применения к ним левого соединения.

Вывод:

2. ПРАВОЕ соединение

ПРАВОЕ соединение = все строки из ПРАВОЙ таблицы + ВНУТРЕННЕЕ соединение

Запрос для получения номера_кредита, статуса и даты заемщика из двух таблиц: –

Запрос: 

ВЫБЕРИТЕ L.LOAN_NO, L.LOAN_STATUS, B.BORROWER_DATE
FROM LOAN L RIGHT JOIN BORROWER B
ON L.LOAN_NO=B.LOAN_NO Позвольте проверить приведенную выше таблицу

. применяя к ним правильное соединение.

Вывод:

3. ВНУТРЕННЕЕ соединение

Внутреннее соединение = все общие строки из обеих таблиц. При объединении хотя бы один столбец должен иметь одинаковый тип данных и общий для таблиц.

Пример:

Давайте рассмотрим две таблицы и применим ВНУТРЕННЕЕ соединение к таблицам: –

Давайте создадим запрос, чтобы получить номер_кредита, статус и дату заемщика из двух таблиц: –

Запрос:

ВЫБЕРИТЕ L.LOAN_NO,L.LOAN_STATUS,B.BORROWER_DATE
FROM LOAN L INNER JOIN BORROWER B
ON L.LOAN_NO=B.LOAN_NO

Давайте проверим выходные данные приведенной выше таблицы после применения к ним внутреннего соединения.

Выход:

Здесь в приведенном выше выводе мы получили общие строки обеих таблиц на основе условия «L.LOAN_NO=B.LOAN_NO».

4. ПОЛНОЕ ВНЕШНЕЕ Соединение

ПОЛНОЕ ВНЕШНЕЕ Соединение = Все строки из обеих таблиц. При объединении хотя бы один столбец должен иметь одинаковый тип данных и общий для таблиц.

Пример:

Рассмотрим две таблицы и применим ПОЛНОЕ ВНЕШНЕЕ соединение к таблицам: –

Построим запрос для получения ap_date и даты заемщика из двух таблиц: –

Запрос: 

ВЫБЕРИТЕ L.

Оставить комментарий

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

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

© 2019 Штирлиц Сеть печатных салонов в Перми

Цифровая печать, цветное и черно-белое копирование документов, сканирование документов, ризография в Перми.