Sql join описание: Оператор SQL INNER JOIN: синтаксис, примеры

Содержание

sql — Выборка из нескольких таблиц inner join

Имеется структура БД следующего вида:

Мне необходимо сделать выборку из таблицы Drivers(date, pack, directory) и Usable(system). При написании запроса у меня(скорее всего) где-то декартово произведение, ибо выдаётся большое количество строк — дубликатов. Использование distinct проблему решает, удаляя дубликаты, и я получаю нужный результат, однако я и сам понимаю, что это жутки костыль и так делать не нужно. Ниже приведён текст моего запроса, посмотрите, может быть я делаю очевидную ошибку:

select Drivers.pack Drivers.directory, Drivers.[date], Usable.[system]
from Sections inner join Drivers
on
(
    Drivers.id in 
   (
        select driverId from Sections where Sections.id in 
       (
           select sectionId from Usable where deviceId in 
           (
                select id from Devices where deviceId like "%VEN_14F1%" and deviceId like "%DEV_8880%"
           )
        )
    )
    and Drivers.id = Sections. driverId
)
inner join Usable
on
(
     Usable.[system] = "6.1x64"
     and
     Usable.sectionId = Sections.id
)
order by(Drivers.[date]) desc; 

Подскажите решение.
P.S.: код отформатировал, надеюсь, так будет удобнее читать.

UPD:

SELECT
    Drivers.date,
    Drivers.pack,
    Drivers.directory,
    Usable.system
FROM
    Drivers
INNER JOIN Sections ON Drivers.id = Sections.driverId
INNER JOIN Usable ON Sections.id = Usable.sectionId
inner join Devices on Usable.deviceId = Devices.id
WHERE Devices.deviceId LIKE "%VEN_14F1%" AND Devices.deviceId LIKE "%DEV_8880%" AND Usable.system = '6.1x64'
order by(Drivers.[date]) desc;
  • sql
  • sqlite






4

Попробуйте:

SELECT
    Drivers.date,
    Drivers.pack,
    Drivers.directory,
    Usable.system
FROM
    Drivers
INNER JOIN Sections ON Drivers.id = Sections.driverId
INNER JOIN Usable ON Sections.id = Usable. sectionId
WHERE
    Usable.deviceId LIKE "%VEN_14F1%" AND Usable.deviceId LIKE "%DEV_8880%" AND Usable.system = '6.1x64'






4

Использование группировки решает проблему:

group by (Drivers.directory)







Зарегистрируйтесь или войдите

Регистрация через Google

Регистрация через Facebook

Регистрация через почту

Отправить без регистрации

Почта

Необходима, но никому не показывается

Отправить без регистрации


Почта

Необходима, но никому не показывается




Нажимая на кнопку «Отправить ответ», вы соглашаетесь с нашими пользовательским соглашением, политикой конфиденциальности и политикой о куки


Как присоединить три таблицы в SQL запросе

Объединение трех таблиц в одном запросе SQL может быть очень сложно, если вы не очень хорошо понимаете объединение в SQL. Объединения SQL всегда были сложным не только для новых программистов, но и для профессионалов, которые уже долго занимаются программированием и используют SQL более чем 2 -х до 3 -х лет. Есть достаточно причин, чтобы запутаться в SQL JOIN, начиная от различных типов SQL JOIN like INNER и OUTER join, LEFT и RIGHT outer join, CROSS join и т.д. Между всеми этими основами, наиболее важным является регистрация, объединения нескольких таблиц. Если вам нужны данные из нескольких таблиц в одном запросе SELECT, вам нужно использовать либо подзапрос либо JOIN. Большую часть времени мы только соединяем две таблицы, как Employee и Department, но иногда вам может потребоваться присоединение более двух таблиц и наиболее частый случай — объединения трех таблиц в SQL.

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

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

SQL Join также является очень популярной темой в SQL и там всегда были некоторые вопросы из соединений, как разница между INNER и OUTER JOIN, например SQL — запрос с JOIN Employee Department и разница между LEFT и RIGHT OUTER JOIN и т.д. Короче говоря это одна из самых важных тем в SQL как из опыта так  и из точки зрения цели.

Единственный способ освоить SQL JOIN, это сделать как можно больше упражнений, насколько это возможно. Если бы вы могли решить большинство головоломок SQL из классической книги Джо Селко, SQL Puzzles and Answers, 2nd edition, вы были бы более уверены в работе с SQL JOIN, хоть это быть две, три или четыре таблицы.

 

Объединение трех таблиц, синтаксис в SQL

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

SELECT t1.col, t3.col 
FROM table1 join table2 ON table1.primarykey = table2.foreignkey
join table3 ON table2.primarykey = table3.foreignkey

 

Мы сначала присоединим таблице 2 к таблице 1, которые создадут временную таблицу с комбинированными данными из table1 и table2, а затем присоединим к Table3. Эта формула может быть распространена на более чем 3 -х таблиц в N таблиц, Вам просто нужно убедиться, что SQL — запрос должен иметь N-1 join, чтобы присоединить N таблиц. Как для объединения двух таблиц мы требуем 1 join а для присоединения 3 таблиц нам нужно 2 join.

Вот хорошая схема, которая хорошо показывает, как применять различные типы присоединений, например как работают в SQL inner, left outer, right outer и cross joins:

 

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

Для того, чтобы лучше понять присоединение 3 таблицы в SQL запросе, давайте рассмотрим пример. Рассмотрим популярный пример Employee и Department. В нашем случае мы использовали таблицу ссылок под названием Register, который связывает или имеет отношение Employee для Department. Первичный ключ таблицы Employee (emp_id) является внешним ключом в Register и аналогичным образом, первичный ключ таблицы Department (dept_id) является внешним ключом в таблице Register.

Для того , чтобы написать запрос SQL для печати имя сотрудника и название отдела мы должны присоединиться к трем таблицам. Первое присоединение Employee и Register и создают временную таблицу, с колонкой dept_id. Теперь второе присоединение таблицы Department к этой временной таблицы по колонке dept_id, чтобы получить желаемый результат. Вот полный SELECT, пример SQL — запроса, чтобы присоединиться к 3 таблицам, и она может быть расширена, чтобы присоединиться к более чем 3 или N таблицам.

mysql> SELECT * FROM Employee;
+--------+----------+--------+
| emp_id | emp_name | salary |
+--------+----------+--------+
| 1      | Антон    |   1900 |
| 2      | Макс     |   3800 |
| 3      | Артем    |   5500 |
| 4      | Дмитрий  |   7600 |
+--------+----------+--------+
4 rows IN SET (0. 00 sec)
mysql> SELECT * FROM Department;
+---------+-----------+
| dept_id | dept_name |
+---------+-----------+
| 101     | Sales     |
| 102     | Marketing |
| 103     | Finance   |
+---------+-----------+
3 rows IN SET (0.00 sec)
mysql> SELECT * FROM Register;
+--------+---------+
| emp_id | dept_id |
+--------+---------+
|      1 |     101 |
|      2 |     102 |
|      3 |     103 |
|      4 |     102 |
+--------+---------+
4 rows IN SET (0.00 sec)
mysql> SELECT emp_name, dept_name FROM Employee e 
JOIN Register r ON e.emp_id=r.emp_id 
JOIN Department d ON r.dept_id=d.dept_id;
+----------+-----------+
| emp_name | dept_name |
+----------+-----------+
| Антон    | Sales     |
| Макс     | Marketing |
| Артем    | Finance   |
| Дмитрий  | Marketing |
+----------+-----------+
4 rows IN SET (0.01 sec)

 

Если вы хотите понять это лучше, попытайтесь объединить таблицы шаг за шагом. Таким образом, вместо того, чтобы присоединиться 3 таблицы за один раз, сначала соединить 2 таблицы и посмотреть, как будет выглядеть таблица результатов. Это все о том, как присоединить три таблицы в одном запросе SQL в реляционной базе данных. Кстати, в этом примере SQL JOIN, мы использовали ANSI SQL, и он будет работать в другой реляционной базы данных, а также, Oracle, SQL Server, Sybase, PostgreSQL и т.д. Дайте нам знать, если вы сталкивались с какой — либо проблемой во время объединения 3 таблицы запросом JOIN в любой другой базе данных.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

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

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

Указание логического оператора (например, = или <>), который будет использоваться при сравнении значений из столбцов.

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

Также см. статью Соединения SQL с C# LINQ.

Типы соединений SQL

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

  1. Внутреннее соединение

    Внутреннее соединение возвращает только те записи/строки, которые совпадают/существуют в обеих таблицах. Внутреннее соединение обычно зависит от предложения FORM или WHERE, в котором данные первой таблицы соединяются с использованием другой таблицы с использованием терминов «внутреннее соединение», за которыми следует соединение второй таблицы с первой таблицей.

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

     Выберите * из таблицы_1 как t1
    внутреннее соединение table_2 как t2
    на t1.IDcol=t2.IDcol 
  2. Внешнее соединение

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

    У нас есть три типа внешнего соединения.

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

      Левое внешнее соединение возвращает все записи/строки из левой таблицы, а из правой таблицы возвращает только совпавшие записи. Если в правой таблице нет совпадающих столбцов, возвращаются значения NULL. Синтаксис для левого внешнего соединения:

       Выберите * из таблицы_1 как t1
      левое внешнее соединение table_2 как t2
      on t1.IDcol=t2.IDcol 
    2. Правое внешнее соединение

      Правое внешнее соединение возвращает все записи/строки из правой таблицы, а из левой таблицы возвращает только совпавшие записи. Если в левой таблице нет совпадающих столбцов, он возвращает значения NULL. Синтаксис для правого внешнего соединения выглядит следующим образом:

       Выберите * из таблицы_1 как t1
      правое внешнее соединение table_2 как t2
      on t1.IDcol=t2.IDcol 
    3. Полное внешнее соединение

      Полное внешнее соединение объединяет левое внешнее соединение и правое внешнее соединение. Это объединение возвращает все записи/строки из обеих таблиц. Если в обеих таблицах нет совпадающих столбцов, возвращаются значения NULL. Синтаксис для полного внешнего соединения:

       Выберите * из таблицы_1 как t1
      полное внешнее соединение table_2 как t2
      на t1. IDcol=t2.IDcol 
  3. Перекрестное соединение

    Перекрестное соединение представляет собой декартово соединение, означающее декартово произведение обеих таблиц. Это соединение не требует никаких условий для соединения двух таблиц. Это объединение возвращает записи/строки, которые представляют собой умножение номеров записей из обеих таблиц, что означает, что каждая строка в левой таблице будет связана с каждой строкой в ​​правой таблице. Синтаксис для правого внешнего соединения:

     Выберите * из таблицы_1.
    перекрестное соединение table_2 
  4. Самосоединение

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

Примеры объединения

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

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

 ВЫБЕРИТЕ t1.OrderID, t0.ProductID, t0.Name, t0.UnitPrice, t1.Quantity, t1.Price
ОТ tblProduct AS t0
ВНУТРЕННЕЕ СОЕДИНЕНИЕ tblOrder AS t1 ON t0.ProductID = t1.ProductID
ORDER BY t1.OrderID 

Внутреннее соединение между более чем двумя таблицами

 SELECT t1.OrderID, t0.ProductID, t0.Name, t0.UnitPrice, t1.Quantity, t1.Price, t2.Name AS Customer
ОТ tblProduct AS t0
ВНУТРЕННЕЕ СОЕДИНЕНИЕ tblOrder AS t1 ON t0.ProductID = t1.ProductID
INNER JOIN tblCustomer AS t2 ON t1.CustomerID = t2.CustID
ЗАКАЗАТЬ ПО t1.OrderID 

Внутреннее соединение по нескольким условиям

 ВЫБЕРИТЕ t1.OrderID, t0.ProductID, t0.Name, t0.UnitPrice, t1.Quantity, t1. Price, t2.Name AS Customer
ОТ tblProduct AS t0
ВНУТРЕННЕЕ СОЕДИНЕНИЕ tblOrder AS t1 ON t0.ProductID = t1.ProductID
INNER JOIN tblCustomer AS t2 ON t1.CustomerID = t2.CustID AND t1.ContactNo = t2.ContactNo
ЗАКАЗАТЬ ПО t1.OrderID 

Левое внешнее соединение

 ВЫБРАТЬ t1.OrderID AS OrderID, t0.ProductID, t0.Name, t0.UnitPrice, t1.Quantity AS Quantity, t1.Price AS Price
ОТ tblProduct AS t0
LEFT OUTER JOIN tblOrder AS t1 ON t0.ProductID = t1.ProductID
ЗАКАЗАТЬ ПО t0.ProductID
  

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

 ВЫБЕРИТЕ t1.OrderID AS OrderID , t0.ProductID , t0.Name , t0.UnitPrice , t1.Quantity AS Количество , t1.Price AS Цена
ОТ tblProduct AS t0
ПРАВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ tblOrder AS t1 ON t0.ProductID = t1.ProductID
ЗАКАЗАТЬ ПО t0.ProductID 

Полное внешнее соединение

 ВЫБРАТЬ t1.OrderID AS OrderID , t0.ProductID , t0.Name , t0.UnitPrice , t1.Quantity AS Quantity , t1.Price AS Price
ОТ tblProduct AS t0
ПОЛНОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ tblOrder AS t1 ON t0. ProductID = t1.ProductID
ЗАКАЗАТЬ ПО t0.ProductID 

Cross Join

 SELECT t1.OrderID, t0.ProductID, t0.Name, t0.UnitPrice, t1.Quantity, t1.Price
FROM tblProduct AS t0, tblOrder AS t1
ORDER BY t0.ProductID 

Самосоединение

Чтобы понять самосоединение, предположим, что мы следуем двум таблицам, и данные в этих двух таблицах показаны на рисунке.

 СОЗДАТЬ ТАБЛИЦУ
(
id int NOT NULL первичный ключ,
имя varchar(100) NULL,
обозначение varchar(50) NULL,
supid int external key references emp(id) ) -- В этой таблице у нас есть внешний ключ supid, который ссылается на собственный идентификатор первичного ключа. Мы используем его для самостоятельного присоединения
ВСТАВИТЬ В emp(id,name,обозначение) VALUES(1,'mohan','Manger')
ВСТАВИТЬ В emp(id,name,обозначение,suvid) VALUES(2,'raj kumar','SE',1)
 ВСТАВИТЬ В emp(идентификатор,имя,обозначение) VALUES(3,'бипул кумар','менеджер')
 ВСТАВИТЬ В emp(id,name,обозначение,supid) VALUES(4,'mrinal kumar','SE',2)
 ВСТАВИТЬ В emp(id,name,обозначение,supid) VALUES(5,'jitendra kumar','SE',2) 
 СОЗДАТЬ ТАБЛИЦУ empinfo
(
id первичный ключ,
 адрес varchar(50) NULL
)
ВСТАВИТЬ В empinfo(id,address) VALUES(1,'Дели')
ВСТАВИТЬ В empinfo(id,address) VALUES(2,'Нойда')
ВСТАВЬТЕ В empinfo(id,address) VALUES(4,'Гургаон')
ВСТАВИТЬ В empinfo(id,address) VALUES(6,'Дели')
ВСТАВИТЬ В empinfo(id,address) VALUES(7,'Нойда')
 
 выберите e. id,e.name,e.supid в качестве идентификатора менеджера, ei.name в качестве имени менеджера из emp e left join emp ei on e.supid=ei.id;
-- внешнее ключевое слово является необязательным 
Что вы думаете?

Операторы соединения SQL помогают нам объединять строки, столбцы и части различных таблиц базы данных и представлять их в виде одной таблицы. Используя объединения в SQL, мы можем легко объединять и представлять данные в одной таблице. Различные типы соединений упрощают доступ к данным для выполнения запросов и транзакций с данными, необходимыми для приложения. Мы можем выполнять соединения на основе одного или нескольких общих полей в двух или более таблицах, как описано в этой краткой статье.

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

Типы SQL JOIN — javatpoint

следующий →
← предыдущая

SQL СОЕДИНЕНИЕ

Соединение SQL используется для выборки или объединения данных (строк или столбцов) из двух или более таблиц на основе определенных условий.

Таблица 1: Заказ

ID заказа ID клиента ИмяЗаказа Название продукта
12025 101 Питер Азбука
12030 105 Роберт XYX
12032 110 Джеймс XYZ
12034 115 Андрей ПКР
12035 120 Мэтью ААА

Таблица 2: Заказчик

Идентификатор клиента ИмяКлиента Страна
100 Грязный Максико
101 Принц Тайвань
103 Мария Фернандес Турция
105 Жасмин Париж
110 Ласка Фаф Индонезия
120 Ромен Ракета Россия

Теперь у нас есть две таблицы Order и Customer . В обеих таблицах есть общий столбец CustomerID . Итак, напишите запрос SQL, чтобы определить общее отношение для выбора записей совпадений из обеих таблиц.

Выберите Order.OrderID, Customer.CustomerName, Customer.Country, Order.ProductName из Order INNER JOIN Customer ON Order.CustomerID = Customer.CustomerID;

После выполнения указанных выше SQL-запросов выдается следующий вывод:

ID заказа ИмяКлиента Страна Название продукта
12025 Принц Тайвань Азбука
12030 Жасмин Париж XYX
12032 Ласка Фаф Индонезия XYZ
12035 Ромен Ракета Россия ААА

Типы соединения SQL

В SQL используются различные типы соединений:

  1. Внутреннее соединение / Простое соединение
  2. Левое внешнее соединение / Левое соединение
  3. Правое внешнее соединение / Правое соединение
  4. Полное внешнее соединение
  5. Крестовое соединение
  6. Самостоятельное соединение

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

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

Синтаксис:

Выберите column_1, column_2, column_3 FROM table_1 INNER JOIN table_2 ON table_1.column = table_2.column;

Внутреннее соединение можно представить с помощью диаграммы Венна следующим образом:

Таблица 1: Студенты

Идентификатор учащегося Имя Студента Субъект ID учителя
101 Александра Информатика Т201
102 Чарльз Экономика Т202
103 Том Круз Информатика Т201
104 Арон Финч Электроника Т203
105 Симен Баджофф Веб-дизайн Т204
106 Кристофер Английская литература Т205
107 Джинсовая ткань Модельер Т206

Таблица 2: Учителя

ID учителя имя учителя УчительЭлектронная почта
Т201 Мистер Дэвис [электронная почта защищена]
Т202 Миссис Джонас [электронная почта защищена]
Т201 Мистер Дэвис [электронная почта защищена]
Т204 Миссис Лопес [электронная почта защищена]
Т205 Миссис Уайли [электронная почта защищена]
Т206 Мистер Бин [электронная почта защищена]

У нас есть две таблицы: Студенты и Учителя Столы. Давайте напишем SQL-запросы для присоединения к таблице с использованием INNER JOIN следующим образом:

Выберите Student_ID, StudentName, TeacherName, TeacherEmail FROM Student INNER JOIN Teachers ON Student.TeacherID = Teachers.TeacherID;

После выполнения запроса создается следующая таблица.

Естественное соединение

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

Синтаксис:

Выберите * из tablename1 Natural JOIN tablename_2;

У нас есть две таблицы: Студенты и Учителя Столы. Давайте напишем SQL-запросы для присоединения к таблице с использованием Natural JOIN следующим образом:

Выберите * из «Студенты». «Присоединяйтесь к преподавателям».

После выполнения вышеуказанного запроса создается следующая таблица.

ЛЕВОЕ СОЕДИНЕНИЕ

LEFT JOIN используется для извлечения всех записей из левой таблицы (таблица 1) и соответствующих строк или столбцов из правой таблицы (таблица 2). Если обе таблицы не содержат совпадающих строк или столбцов, возвращается значение NULL.

Синтаксис:

Выберите столбец_1, столбец_2, столбец (столбцы) ИЗ таблицы_1 LEFT JOIN table_2 ON table_1.column_name = table_2.column_name;

Мы также можем представить левое соединение через диаграмму Венна следующим образом:

Примечание. В некоторых базах данных LEFT JOIN также известен как LEFT OUTER JOIN.

Таблица 1: Product_Details

ID продукта Название продукта Сумма
Про101 Ноутбук 56000
Про102 Мобильный 38000
Про103 Наушники 5000
Про104 Телевидение 25000
Про105 iPad 60000

Таблица 2: Customer_Details

Имя Клиента Адрес клиента CustomerAge ID продукта
Мартин Гуптилл Сан-Франциско, США 26 Про101
Джеймс Австралия 29 Про103
Амбати Уильямсон Новая Зеландия 27 Про102
Джофра Арчер Южная Африка 24 Про105
Кейт Уайли Австралия 20 Про103

У нас есть две таблицы: Product_Details и Customer_Details Таблицы. Давайте напишем SQL-запросы для присоединения к таблице с использованием LEFT JOIN следующим образом:

Выберите ID, ProductName, CustomerName, CustomerAddress, Amount FROM Product_Details LEFT JOIN Customer_Details ON Product_Details.ID = Customer_Details.ProductID;

После выполнения запроса создается следующая таблица.

ПРАВОЕ СОЕДИНЕНИЕ или ПРАВОЕ внешнее СОЕДИНЕНИЕ:

ПРАВОЕ СОЕДИНЕНИЕ используется для извлечения всех записей из правой таблицы (таблица 2) и соответствующих строк или столбцов из левой таблицы (таблица 1). Если обе таблицы не содержат совпадающих строк или столбцов, возвращается значение NULL.

Синтаксис:

Выберите столбец_1, столбец_2, столбец (столбцы) ИЗ таблицы_1 ПРАВОЕ СОЕДИНЕНИЕ table_2 ON table_1.column_name = table_2.column_name;

Мы также можем представить правое соединение с помощью диаграммы Венна следующим образом:

Примечание.

В некоторых базах данных ПРАВОЕ СОЕДИНЕНИЕ также известно как ПРАВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ.

Таблица 1: Product_Details

ID Название продукта Сумма
Про101 Ноутбук 56000
Про102 Мобильный 38000
Про103 Наушники 5000
Про104 Телевидение 25000
Про105 iPad 60000

Таблица 2: Customer_Details

Имя Клиента Адрес клиента CustomerAge идентификатор продукта
Мартин Гуптил Сан-Франциско, США 26 Про101
Джеймс Австралия 29 Про103
Амбати Уильямсон Новая Зеландия 27 Про102
Джофра Арчер Южная Африка 24 Про105
Знамение Англия 29 Про107
Морган Англия 20 Про108

У нас есть две таблицы: Product_Details и Customer_Details Таблицы. Давайте напишем SQL-запросы для присоединения к таблице с использованием RIGHT JOIN следующим образом:

Выберите ID, ProductName, CustomerName, CustomerAddress, Amount FROM Product_Details LEFT JOIN Customer_Details ON Product_Details.ID = Customer_Details.ProductID;

После выполнения запроса создается следующая таблица.

ПОЛНОЕ СОЕДИНЕНИЕ или ПОЛНОЕ внешнее СОЕДИНЕНИЕ:

Это комбинация результатов LEFT JOIN и RIGHT JOIN 9.0135 . Объединенные таблицы возвращают все записи из обеих таблиц, и если в таблице не найдено совпадений, она помещает NULL. Его также называют FULL OUTER JOIN .

Синтаксис:

Выберите столбец_1, столбец_2, столбец (столбцы) ИЗ таблицы_1 ПОЛНОЕ СОЕДИНЕНИЕ table_2 ON table_1.column_name = table_2.column_name;

Или, ПОЛНОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ

Выберите столбец_1, столбец_2, столбец (столбцы) ИЗ таблицы_1 ПОЛНОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ table_2 ON table_1. column_name = table_2.column_name;

Мы также можем представить полное внешнее соединение с помощью диаграммы Венна следующим образом:

Таблица 1: Product_Details

ID Название продукта Сумма
Про101 Ноутбук 56000
Про102 Мобильный 38000
Про103 Наушники 5000
Про104 Телевидение 25000
Про105 iPad 60000

Таблица 2: Customer_Details

Имя Клиента Адрес клиента CustomerAge ID продукта
Мартин Гуптилл Сан-Франциско, США 26 Про101
Джеймс Австралия 29 Про103
Амбати Уильямсон Новая Зеландия 27 Про102
Джофра Арчер Южная Африка 24 Про105
Знамение Англия 29 Про107
Морган Англия 20 Про108

У нас есть две таблицы: Product_Details и Customer_Details Таблицы. Давайте напишем SQL-запросы для присоединения к таблице, используя FULL JOIN следующим образом:

Выберите ID, ProductName, CustomerName, CustomerAddress, Amount FROM Product_Details FULL JOIN Customer_Details ON Product_Details.ID = Customer_Details.ProductID;

После выполнения запроса создается следующая таблица.

Примечание. MySQL не поддерживает концепции FULL JOIN, поэтому мы можем использовать предложение UNION ALL для объединения обеих таблиц.

Вот синтаксис для UNION ALL Пункт для объединения таблиц.

Выберите ID, ProductName, CustomerName, CustomerAddress, Amount FROM Product_Details LEFT JOIN Customer_Details ON Product_Details.ID = Customer_Details.ProductID
СОЮЗ ВСЕХ
Выберите ID, ProductName, CustomerName, CustomerAddress, Amount FROM Product_Details RIGHT JOIN Customer_Details ON Product_Details.ID = Customer_Details.ProductID

ПОПЕРЕЧНОЕ СОЕДИНЕНИЕ

Он также известен как CARTESIAN JOIN , который возвращает декартово произведение двух или более соединенных таблиц. CROSS JOIN создает таблицу, которая объединяет каждую строку из первой таблицы с каждой второй строкой таблицы. Не требуется включать какое-либо условие в CROSS JOIN.

Синтаксис:

Выберите * из table_1 cross join table_2;

или

Выберите столбец1, столбец2, столбец3 ИЗ таблицы_1, таблицы_2;

Таблица 1: Product_Details

ID Название продукта Сумма
Про101 Ноутбук 56000
Про102 Мобильный 38000
Про103 Наушники 5000
Про104 Телевидение 25000
Про105 iPad 60000

Таблица 2: Customer_Details

Имя Клиента Адрес клиента CustomerAge ID продукта
Мартин Гуптилл Сан-Франциско, США 26 Про101
Джеймс Австралия 29 Про103
Амбати Уильямсон Новая Зеландия 27 Про102
Джофра Арчер Южная Африка 24 Про105
Знамение Англия 29 Про107
Морган Англия 20 Про108

У нас есть две таблицы: Product_Details и Customer_Details Таблицы.

Imacros | Все права защищены © 2021