кодесурса
«SQL

SQL INNER JOIN

script1adsense2code
script1adsense3code

Что такое Inner Join в SQL?

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

Синтаксис:

 ВЫБРАТЬ * 
ИЗ таблицы 1 ВНУТРЕННЕЕ СОЕДИНЕНИЕ 
ON table1.column_name = table2.column_name; 

ИЛИ ЖЕ

 ВЫБРАТЬ * 
ИЗ таблицы 1
ПРИСОЕДИНИТЬСЯ к table2 
ON table1.column_name = table2.column_name; 

Иллюстрированная презентация:

«SQL

INNER JOIN в SQL объединяет две таблицы в соответствии с определенными критериями с использованием оператора сравнения.

Синтаксическая диаграмма - INNER JOIN

«SQL

Пример: SQL INNER JOIN между двумя таблицами

Вот пример внутреннего соединения в SQL между двумя таблицами.

Пример таблицы: продукты


Пример таблицы: компания


Чтобы объединить наименование товара, столбцы единиц товара из таблицы продуктов и название компании, столбцы города компании из таблицы компаний, с выполнением следующего условия -

1. company_id продуктов и таблицы компании должны совпадать,

можно использовать следующий оператор SQL:

Код SQL:

SELECT foods.item_name,foods.item_unit,
company.company_name,company.company_city 
FROM foods 
INNER JOIN company 
ON foods.company_id =company.company_id;

Выход:

 ITEM_NAME ITEM_ COMPANY_NAME COMPANY_CITY
------------------------- ----- -------------------- ----- --------------
Chex Mix Pcs Akas Foods Дели
Cheez-It Pcs Jack Hill Ltd Лондон
BN Biscuit Pcs Jack Hill Ltd Лондон
Mighty Munch PC Гурманы. Лондон
Пот Райс шт Джек Хилл Лтд Лондон
Jaffa Cakes Pcs Заказать все Бостон

Пример SQL INNER JOIN с использованием ключевого слова JOIN

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

1. Идентификатор компании продуктов и идентификатор компании таблицы компании должны быть одинаковыми,

можно использовать следующий оператор SQL:

Код SQL:

SELECT foods.item_name,foods.item_unit, 
company.company_name,company.company_city 
FROM foods 
JOIN company 
ON foods.company_id =company.company_id;

Выход:

 ITEM_NAME ITEM_ COMPANY_NAME COMPANY_CITY
------------------------- ----- -------------------- ----- -------------
Chex Mix Pcs Akas Foods Дели
Cheez-It Pcs Jack Hill Ltd Лондон
BN Biscuit Pcs Jack Hill Ltd Лондон
Mighty Munch PC Гурманы. Лондон
Пот Райс шт Джек Хилл Лтд Лондон
Jaffa Cakes Pcs Заказать все Бостон

Иллюстрированная презентация:

«SQL

SQL INNER JOIN для всех столбцов

Чтобы получить все столбцы из продуктов и таблицы компании после присоединения, при следующем условии -

1. Идентификатор компании продуктов и идентификатор компании таблицы компании должны быть одинаковыми,

можно использовать следующий оператор SQL:

Код SQL:

SELECT * 
FROM foods 
JOIN company 
ON foods.company_id =company.company_id;

Выход:

 ITEM_ID ITEM_NAME ITEM_ COMPAN COMPAN COMPANY_NAME COMPANY_CITY
-------- ------------------------- ----- ------ ------ ------------------------- -------------
1 Chex Mix Pcs 16 16 Akas Foods Дели
6 Cheez-It PC 15 15 Jack Hill Ltd Лондон
2 BN бисквитные шт 15 15 Джек Хилл Лтд Лондон
3 Mighty Munch PC 17 17 Гурманы. Лондон
4 Горшок с рисом шт 15 15 Джек Хилл Лтд Лондон
5 Jaffa Cakes Pcs 18 18 Заказать все Бостон

Разница между JOIN и INNER JOIN

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

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

Внутреннее соединение A и B дает результат пересечения A B, то есть внутреннюю часть пересечения диаграммы Венна.

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

Использование предложения JOIN

SELECT * FROM 
Table1 JOIN Table2 
ON Table1.column_name=Table2.column_name;

Использование предложения INNER JOIN

SELECT * 
FROM Table1 INNER JOIN Table2 
ON Table1.column_name= Table2.column_name;

Разница между INNER JOIN и OUTER JOIN

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

Где, поскольку OUTER JOIN возвращает все строки из участвующих таблиц, которые удовлетворяют условию, а также те строки, которые не соответствуют условию, появятся в этой операции. Этот набор результатов может отображаться в трех типах формата -

Первый - LEFT OUTER JOIN, в это объединение входят все строки из левой таблицы предложения JOIN и несопоставленные строки из правой таблицы со значениями NULL для выбранных столбцов.

Второй - RIGHT OUTER JOIN, в это объединение входят все строки справа от причины JOIN и несопоставленные строки из левой таблицы со значениями NULL для выбранных столбцов.

Последняя в FULL OUTER JOIN в этом соединении включает в себя совпадающие строки из левой и правой таблиц предложения JOIN и несопоставленные строки из левой и правой таблиц со значениями NULL для выбранных столбцов.

Пример:

Вот две таблицы tableX и tableY, и у них нет повторяющихся строк в каждой. В таблице X значения (A, B) являются уникальными, а в таблице Y значения (E, F) являются уникальными, но значения (C и D) являются общими в обеих таблицах.

«tablex

Вот ВНУТРЕННЕЕ СОЕДИНЕНИЕ

SELECT * 
FROM tableX 
INNER JOIN tableY on tableX.X = tableY.Y;

или же

SELECT tableX.*,tableY.*  
FROM tableX,tableY 
WHERE tableX.X = tableY.Y;

Выход:

«Sql

Здесь только совпадение tableX и tableY появилось в наборе результатов.

Вот левое внешнее соединение

SELECT tableX.*,tableY.*  
FROM tableX,tableY 
WHERE tableX.X = tableY.Y(+)

или же

SELECT * 
FROM tableX 
LEFT OUTER JOIN tableY ON tableX.X= tableY.Y

Выход:

«Sql

Здесь отображаются все строки из tableX , расположенные слева от предложения JOIN, и все строки со значениями NULL для несопоставленных столбцов из таблицы Y , являющейся правой частью предложения JOIN.

Вот ПРАВО НАРУЖНОЕ

SELECT * FROM tableX 
RIGHT OUTER JOIN tableY ON tableX.X= tableY.Y

Выход:

«Sql

Здесь появились все строки таблицы tableY, которая является правой стороной предложения JOIN, и все строки со значениями NULL для несопоставленных столбцов таблицы tableX, которая находится слева от предложения JOIN.

Вот полное внешнее соединение

SELECT * 
FROM tableX 
FULL OUTER JOIN tableY ON tableX.X= tableY.Y

Выход:

«Sql

Здесь появились все совпадающие строки из tableX и tableY и все несопоставленные строки со значениями NULL для обеих таблиц.

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

В предложении WHERE делается то, что все записи, которые соответствуют условию WHERE, включаются в набор результатов, но INNER JOIN состоит в том, что данные, не соответствующие условию JOIN, исключаются из набора результатов.

Связывание между двумя или более таблицами должно выполняться с использованием предложения INNER JOIN ON, но фильтрация отдельных элементов данных должна выполняться с помощью предложения WHERE.

INNER JOIN - это синтаксис ANSI, тогда как синтаксис WHERE более ориентирован на реляционную модель.

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

ВНУТРЕННИЕ СОЕДИНЕНИЯ: реляционные базы данных

Ключевые моменты для запоминания

Нажмите на следующее, чтобы получить презентацию слайдов -

«SQL

Выводы указанного оператора SQL, показанного здесь, взяты с использованием Oracle Database 10g Express Edition.

Упражнения по SQL

Хотите улучшить вышеуказанную статью? Вносите свои заметки / комментарии / примеры через Disqus.

Предыдущий: SQL NON EQUI JOIN
Далее: SQL NATURAL JOIN

Новый контент: Composer: менеджер зависимостей для PHP , R программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code