Join in join sql: SQL multiple joins for beginners with examples
Содержание
JOIN — Учебник SQL — Schoolsw3.com
schoolsw3.com
САМОСТОЯТЕЛЬНОЕ ОБУЧЕНИЕ ДЛЯ ВЕБ РАЗРАБОТЧИКОВ
❮ Назад
Далее ❯
JOIN
Предложение JOIN используется для объединения строк из двух или более таблиц на основе связанного столбца между ними.
Давайте рассмотрим выборку из таблицы «Orders»:
OrderID | CustomerID | OrderDate |
---|---|---|
10308 | 2 | 1996-09-18 |
10309 | 37 | 1996-09-19 |
10310 | 77 | 1996-09-20 |
Затем посмотрите на выборку из таблицы «Customers»:
CustomerID | CustomerName | ContactName | Country |
---|---|---|---|
1 | Alfreds Futterkiste | Maria Anders | Germany |
2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Mexico |
3 | Antonio Moreno Taquería | Antonio Moreno | Mexico |
Обратите внимание, что столбец «CustomerID» в таблице «Orders» ссылается на «CustomerID» в таблице «Customers».
Связь между двумя приведенными выше таблицами представляет собой столбец «CustomerID».
Затем мы можем создать следующий заявление SQL (содержащий внутреннее соединение),
который выбирает записи, имеющие совпадающие значения в обеих таблицах:
Пример
SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
FROM Orders
INNER JOIN Customers ON Orders.CustomerID=Customers.CustomerID;
Попробуйте сами »
и он будет производить что-то вроде этого:
OrderID | CustomerName | OrderDate |
---|---|---|
10308 | Ana Trujillo Emparedados y helados | 9/18/1996 |
10365 | Antonio Moreno Taquería | 11/27/1996 |
10383 | Around the Horn | 12/16/1996 |
10355 | Around the Horn | 11/15/1996 |
10278 | Berglunds snabbköp | 8/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
для соединения двух таблиц:
Язык кода: SQL (язык структурированного запроса) (SQL)
SELECT столбец1, столбец2 ОТ Таблица 1 INNER JOIN table_2 ON join_condition;
Давайте рассмотрим синтаксис выше:
- . Соглашенные таблицы
Table_1
иTable_2
. - Для каждой строки в
table_1
запрос находит соответствующую строку вtable_2
, которая удовлетворяет условию соединения . Если соответствующая строка найдена, запрос возвращает строку, содержащую данные из обеих таблиц . В противном случае проверяется следующая строка вtable_1
, и этот процесс продолжается до тех пор, пока не будут проверены все строки вtable_1
.
Для объединения более двух таблиц применялась та же логика.
Примеры SQL INNER JOIN
SQL INNER JOIN – запрос данных из двух таблиц пример
В этом примере мы будем использовать таблицы products
и категорий
в образце базы данных. На следующем рисунке показана схема базы данных.
На схеме выше:
- В одной категории может быть много товаров.
- Один продукт принадлежит к одной и только одной категории.
Следовательно, между строками в категории
таблицы и строки в таблице продуктов
. Связью между двумя таблицами является столбец categoryid
.
Нам нужно запросить следующие данные из обеих таблиц:
-
productID
,productName
из таблицыproducts
. -
categoryName
из таблицыкатегорий
.
Следующий запрос извлекает данные из обеих таблиц:
Язык кода: SQL (язык структурированных запросов) (sql)
ВЫБЕРИТЕ productID, productName, categoryName ОТ продукты ВНУТРЕННЕЕ СОЕДИНЕНИЕ категории ПО Categories. categoryID = products.categoryID;
Условие соединения указывается в предложении INNER JOIN
после ключевого слова ON
в виде выражения:
Язык кода: SQL (язык структурированных запросов) (sql)
категории .categoryID = товары. ID категории
Для каждой строки в таблице 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
, называемая неявным внутренним соединением, как показано ниже:
Язык кода: SQL (язык структурированных запросов) (sql)
ВЫБЕРИТЕ столбец1, столбец2 ОТ Таблица 1, Таблица 2 ГДЕ условие_присоединения;
В этой форме вы указываете все соединенные таблицы в предложении FROM и помещаете условие соединения в предложение WHERE Оператор SELECT
.