Join in join sql: SQL multiple joins for beginners with examples

JOIN — Учебник SQL — Schoolsw3.com

schoolsw3.com

САМОСТОЯТЕЛЬНОЕ ОБУЧЕНИЕ ДЛЯ ВЕБ РАЗРАБОТЧИКОВ


❮ Назад
Далее ❯


JOIN

Предложение JOIN используется для объединения строк из двух или более таблиц на основе связанного столбца между ними.

Давайте рассмотрим выборку из таблицы «Orders»:

OrderIDCustomerIDOrderDate
1030821996-09-18
10309371996-09-19
10310771996-09-20

Затем посмотрите на выборку из таблицы «Customers»:

CustomerIDCustomerNameContactNameCountry
1Alfreds FutterkisteMaria AndersGermany
2Ana Trujillo Emparedados y heladosAna TrujilloMexico
3Antonio Moreno TaqueríaAntonio MorenoMexico

Обратите внимание, что столбец «CustomerID» в таблице «Orders» ссылается на «CustomerID» в таблице «Customers».
Связь между двумя приведенными выше таблицами представляет собой столбец «CustomerID».

Затем мы можем создать следующий заявление SQL (содержащий внутреннее соединение),
который выбирает записи, имеющие совпадающие значения в обеих таблицах:

Пример

SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
FROM Orders
INNER JOIN Customers ON Orders.CustomerID=Customers.CustomerID;

Попробуйте сами »

и он будет производить что-то вроде этого:

OrderIDCustomerNameOrderDate
10308Ana Trujillo Emparedados y helados9/18/1996
10365Antonio Moreno Taquería11/27/1996
10383Around the Horn12/16/1996
10355Around the Horn11/15/1996
10278Berglunds snabbköp8/12/1996

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

Вот различные типы соединений в SQL:

  • (INNER) JOIN: Возвращает записи, имеющие совпадающие значения в обеих таблицах
  • LEFT (OUTER) JOIN: Возвращает все записи из левой таблицы и совпадающие записи из правой таблицы
  • RIGHT (OUTER) JOIN: Возвращает все записи из правой таблицы и совпадающие записи из левой таблицы
  • FULL (OUTER) JOIN: Возвращает все записи при наличии совпадения в левой или правой таблице

 
 
 


Проверьте себя с помощью упражнений

Упражнение:

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

SELECT *
FROM Orders
LEFT JOIN Customers
=
;

Начните упражнение

❮ Назад
Далее ❯

ВЫБОР ЦВЕТА




ТОП Учебники


HTML Учебник
CSS Учебник
JavaScript Учебник
КАК Учебник
SQL Учебник
Python Учебник
W3.CSS Учебник
Bootstrap Учебник
PHP Учебник
Java Учебник
C++ Учебник
jQuery Учебник

ТОП Справочники


HTML Справочник
CSS Справочник
JavaScript Справочник
SQL Справочник
Python Справочник
W3.CSS Справочник
Bootstrap Справочник
PHP Справочник
HTML Цвета
Java Справочник
Angular Справочник
jQuery Справочник

ТОП Примеры


HTML Примеры
CSS Примеры
JavaScript Примеры
КАК Примеры
SQL Примеры
Python Примеры
W3.CSS Примеры
Bootstrap Примеры
PHP Примеры
Java Примеры
XML Примеры
jQuery Примеры



Форум |
О SchoolsW3


SchoolsW3 оптимизирован для бесплатного обучения, проверки и подготовки знаний. Примеры в редакторе упрощают и улучшают чтение и базовое понимание. Учебники, ссылки, примеры постоянно пересматриваются, чтобы избежать ошибок, но не возможно гарантировать полную правильность всего содержания. Некоторые страницы сайта могут быть не переведены на РУССКИЙ язык, можно отправить страницу как ошибку, так же можете самостоятельно заняться переводом. Используя данный сайт, вы соглашаетесь прочитать и принять
Условия к использованию,
Cookies и политика конфиденциальности.

Авторское право 1999- Все права защищены.
SchoolsW3 работает на площадке от SW3.CSS.

Множественные соединения SQL для начинающих с примерами

УДАЛИТЬ ТАБЛИЦУ, ЕСЛИ СУЩЕСТВУЕТ, продажи

GO

УДАЛИТЬ ТАБЛИЦУ, ЕСЛИ СУЩЕСТВУЕТ заказы

GO

УДАЛИТЬ ТАБЛИЦУ, ЕСЛИ СУЩЕСТВУЕТ onlinecustomers

GO

CREATE TABLE onlinecustomers (customerid INT PRIMARY KEY IDENTITY( 1,1) ,CustomerName VARCHAR(100)

,CustomerCity VARCHAR(100) ,Customermail VARCHAR(100))

GO

CREATE TABLE заказы (orderId INT PRIMARY KEY IDENTITY(1,1) , customerid ИНТ  ,

ordertotal float ,discountrate float ,orderdate DATETIME)

GO

CREATE TABLE продажи (salesId INT PRIMARY KEY IDENTITY(1,1) ,

orderId INT ,

salestotal FLOAT )

ГО

 

 

ВСТАВЬТЕ В [dbo]. [onlinecustomers]([CustomerName],[CustomerCity],[Customermail]) VALUES (N’Salvador’,N’Philadelphia’,N’[email protected]’)

INSERT INTO [ dbo].[onlinecustomers]([CustomerName],[CustomerCity],[Customermail]) VALUES (N’Gilbert’,N’San Diego’,N’[email protected]’)

ВСТАВИТЬ В [dbo].[onlinecustomers]([CustomerName],[CustomerCity],[Customermail]) ЗНАЧЕНИЯ (N’Ernest’,N’New York’,N’[email protected]’)

ВСТАВИТЬ В [dbo].[onlinecustomers]([CustomerName],[CustomerCity],[Customermail]) ЗНАЧЕНИЯ (N’Stella’,N’Phoenix’,N’[email protected]’)

ВСТАВИТЬ В [ dbo].[onlinecustomers]([CustomerName],[CustomerCity],[Customermail]) VALUES (N’Jorge’,N’Los Angeles’,N’[email protected]’)

ВСТАВИТЬ В [dbo] .[onlinecustomers]([CustomerName],[CustomerCity],[Customermail]) VALUES (N’Jerome’,N’San Antonio’,N’[email protected]’)

ВСТАВЬТЕ В [dbo].[onlinecustomers]([CustomerName],[CustomerCity],[Customermail]) ЗНАЧЕНИЯ (N’Edward’,N’Chicago’,N’wguexiymy. [email protected]’)

 

GO

 

ВСТАВИТЬ В [dbo].[orders]([customerid],[ordertotal],[discountrate],[orderdate]) VALUES (3,1910.64,5.49,CAST(’03-Dec-2019′ AS DATETIME))

ВСТАВИТЬ В [dbo].[orders]([customerid],[ordertotal],[discountrate],[orderdate]) VALUES (4,150.89,15.33,CAST(’11-Jun-2019′ AS DATETIME))

INSERT INTO [dbo].[orders]([customerid],[ordertotal],[discountrate],[orderdate]) VALUES (5,912.55,13.74,CAST(’15-Sep-2019′ AS DATETIME))

INSERT INTO [dbo].[orders]([customerid],[ordertotal],[discountrate],[orderdate]) VALUES (7,418.24,14.53,CAST(’28-May-2019′ AS DATETIME))

ВСТАВИТЬ В [dbo] .[orders]([customerid],[ordertotal],[discountrate],[orderdate]) VALUES (55,512.55,13.74,CAST(’15-Jun-2019′ AS DATETIME))

INSERT INTO [dbo].[orders ]([customerid],[ordertotal],[discountrate],[orderdate]) VALUES (57,118.24,14.53,CAST(’28-Dec-2019′ AS DATETIME))

GO

 

ВСТАВИТЬ В [dbo].[sales]([orderId],[salestotal]) VALUES (3370,95)

ВСТАВИТЬ В [dbo]. [sales]([orderId], [salestotal]) VALUES (4882,13) ​​

ВСТАВИТЬ В [dbo].[sales]([orderId],[salestotal]) VALUES (12 370,95)

ВСТАВИТЬ В [dbo].[sales]([orderId],[salestotal ]) VALUES (13 882,13) ​​

ВСТАВИТЬ В [dbo].[sales]([orderId],[salestotal]) VALUES (55 170,95)

ВСТАВИТЬ В [dbo].[sales]([orderId],[salestotal]) ЗНАЧЕНИЯ (57 382,13) ​​

SQL INNER JOIN — Объединение двух или более таблиц

Резюме : в этом руководстве вы узнаете, как запрашивать данные из нескольких таблиц с помощью оператора SQL INNER JOIN .

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

SQL предоставляет несколько типов соединений, таких как внутреннее соединение, внешнее соединение (левое внешнее соединение или левое соединение, правое внешнее соединение или правое соединение и полное внешнее соединение) и самосоединение. В этом уроке мы покажем вам, как использовать ВНУТРЕННЕЕ СОЕДИНЕНИЕ .

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

Ниже показан синтаксис INNER JOIN для соединения двух таблиц:

 

SELECT столбец1, столбец2 ОТ Таблица 1 INNER JOIN table_2 ON join_condition;

Язык кода: SQL (язык структурированного запроса) (SQL)

Давайте рассмотрим синтаксис выше:

  • . Соглашенные таблицы Table_1 и Table_2 .
  • Для каждой строки в table_1 запрос находит соответствующую строку в table_2 , которая удовлетворяет условию соединения . Если соответствующая строка найдена, запрос возвращает строку, содержащую данные из обеих таблиц . В противном случае проверяется следующая строка в table_1 , и этот процесс продолжается до тех пор, пока не будут проверены все строки в table_1 .

Для объединения более двух таблиц применялась та же логика.

Примеры SQL INNER JOIN

SQL INNER JOIN – запрос данных из двух таблиц пример

В этом примере мы будем использовать таблицы products и категорий в образце базы данных. На следующем рисунке показана схема базы данных.

На схеме выше:

  • В одной категории может быть много товаров.
  • Один продукт принадлежит к одной и только одной категории.

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

Нам нужно запросить следующие данные из обеих таблиц:

  • productID , productName из таблицы products .
  • categoryName из таблицы категорий .

Следующий запрос извлекает данные из обеих таблиц:

 

ВЫБЕРИТЕ productID, productName, categoryName ОТ продукты ВНУТРЕННЕЕ СОЕДИНЕНИЕ категории ПО Categories. categoryID = products.categoryID;

Язык кода: SQL (язык структурированных запросов) (sql)

Условие соединения указывается в предложении INNER JOIN после ключевого слова ON в виде выражения:

 

категории .categoryID = товары. ID категории

Язык кода: SQL (язык структурированных запросов) (sql)

Для каждой строки в таблице products запрос находит соответствующую строку в таблице категорий с тем же идентификатором категории . Если есть совпадение между двумя строками в обеих таблицах, возвращается строка, содержащая столбцы, указанные в предложении SELECT, т. е. идентификатор продукта, название продукта и название категории; в противном случае он проверяет следующую строку в таблице продуктов , чтобы найти соответствующую строку в таблице категорий . Этот процесс продолжается до тех пор, пока не будет проверена последняя строка таблицы products.

SQL INNER JOIN — запрос данных из трех таблиц

Мы можем использовать те же методы для соединения трех таблиц. Следующий запрос выбирает productID , productName , categoryName и поставщик из продуктов , категорий и поставщиков таблиц:

9023 8

ВЫБОР
Код товара,
наименование товара,
название категории,
Название компании КАК поставщик
ОТ
продукты
ВНУТРЕННЕЕ СОЕДИНЕНИЕ
Categories ON category.categoryID = products.categoryID
ВНУТРЕННЕЕ СОЕДИНЕНИЕ
поставщики ПО Suppliers.supplierID = products.supplierID

Язык кода: SQL (язык структурированных запросов) (sql)

Неявное SQL INNER JOIN

Существует еще одна форма INNER JOIN , называемая неявным внутренним соединением, как показано ниже:

 

ВЫБЕРИТЕ столбец1, столбец2 ОТ Таблица 1, Таблица 2 ГДЕ условие_присоединения;

Язык кода: SQL (язык структурированных запросов) (sql)

В этой форме вы указываете все соединенные таблицы в предложении FROM и помещаете условие соединения в предложение WHERE Оператор SELECT .