Inner join sql пример: Операция INNER JOIN (Microsoft Access SQL)

SQL INNER JOIN: Полное руководство

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

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

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

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

Содержание

  1. SQL INNER JOIN
  2. Пример SQL INNER JOIN
  3. Вывод

SQL INNER JOIN

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

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

Давайте посмотрим на синтаксис ключевого слова INNER JOIN :

  • SELECT name
  • FROM customers
  • INNER JOIN plans
  • ON customers.plan_id = plans.id;

Этот запрос объединяет строки из таблиц «клиенты» и «планы». Он возвращает список всех клиентов с «plan_id», равным любому идентификатору в таблице «планы».

Мы используем предложение INNER JOIN для объединения наших таблиц. Ключевое слово ON идёт после имени таблицы, к которой мы присоединяемся. Вы можете указать несколько условий после ключевого слова ON, разделив их запятыми.

Пример SQL INNER JOIN

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

Вот таблица сотрудников:

сотрудники
имязаглавиеDepartment_id
ЛюкСотрудник по продажам1
МайкСотрудник по продажам1
ХаннаСотрудник по продажам1
ДжеффСтарший специалист по продажам1
АлексисСотрудник по продажам1
ИонаВице-президент по продажам3
ЭммаДиректор по маркетингу2

(7 рядов)

Это таблица отделов:

company_departments
Department_idимя
1продажи
2маркетинг
3исполнительный

(3 ряда)

Допустим, мы хотели получить имена, должности и названия отделов для всех сотрудников. Эти данные содержатся в двух таблицах: имена и должности сотрудников находятся в таблице сотрудников. Названия отделов находятся в таблице company_departments.

Как мы получаем информацию, которую ищем?

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

А также в таблице company_departments каждый отдел также имеет идентификатор (который является первичным ключом в таблице). Это означает, что мы можем соответствовать сотруднику department_id со списком отделов. Это позволит нам узнать название отдела, в котором работает этот сотрудник.

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

SELECT Employees.Name, Employees.Title, Company_Departments.Name
FROM Employees
INNER JOIN Company_Departments
ON Employees.Department_ID = Company_Departments.Department_ID;

Наш запрос возвращает следующие совпадающие строки:

имязаглавиеимя
АлексисСотрудник по продажамПродажи
ДжеффСтарший специалист по продажамПродажи
ХаннаСотрудник по продажамПродажи
МайкСотрудник по продажамПродажи
ЛюкСотрудник по продажамПродажи
ЭммаДиректор по маркетингуМаркетинг
ИонаВице-президент по продажамИсполнительный

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

Во второй строке мы указываем, что хотим получить информацию о сотрудниках из таблицы сотрудников. Затем мы используем наше ВНУТРЕННЕЕ СОЕДИНЕНИЕ, чтобы связать нашу таблицу сотрудников с таблицей company_departments, которая включает названия отделов.

Наконец, наша последняя линия связи как сотрудников и company_departments таблицы вместе по их общих полей, в этом случае department_id.

Вывод

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

Освоение объединений — важная часть запросов к базам данных SQL, и это понимание приблизит вас на один шаг к тому, чтобы стать экспертом по SQL.QL.

Использование оператора INNER JOIN

    Об объекте

    Учебные материалы

    Правила описания синтаксиса команд SQL

    Выборка данных

    Сортировка выбранных данных

    Фильтрация данных (предложение WHERE)

    Создание вычисляемых полей

    Агрегирующие функции

    Итоговые данные (предложение GROUP BY)

    Объединение таблиц

    Внутреннее объединение

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

    Использование оператора INNER JOIN

    Внешние объединения

    Подзапросы

    Комбинированные запросы

    Вопросы для самопроверки

    Практические задания

    Список литературы

    Приложение


Использование оператора INNER JOIN

Синтаксис оператора SELECT для выполнения операции внутреннего объединения имеет вид:

SELECT [DISTINCT] [<table1>.

]<column_name>, [<table2>.]<column_name> [,…]
FROM <table1> [INNER] JOIN <table2> [таблица_1.]
ON <column_name><join_condition>…][таблица_2.]<column_name>

Оператор SELECT здесь точно такой же, как и при использовании предложения WHERE, но предложение FROM другое. Здесь отношение между двумя таблицами является частью предложения FROM, указанного как INNER JOIN. При использовании такого синтаксиса предложение объединения указывается с использованием специального предложения ON вместо предложения WHERE. Фактическое предложение, передаваемое в ON, то же самое, которое передавалось бы в предложение WHERE*.

Ниже представлены запросы из предыдущего раздела, написанные с применением INNER JOIN.

Примеры

Получить список клиентов из Сиэтла, с указанием номеров действующих договоров.

SQL:
SELECT contract_id, lastname, name
FROM tbl_clients
JOIN tbl_contract ON tbl_clients.client_id = tbl_contract.client_id
WHERE retire_date IS NULL AND region=’Seattle’


Подсчитать количество договоров, заключенных на пользование каждой из предлагаемых услуг. Полученный список отсортировать по названию услуги.

SQL:
SELECT service, СOUNT(contract_id)
ROM tbl_service
INNER JOIN tbl_contract ON tbl_service.service_id = tbl_contract.service_id

WHERE retire_date IS NULL
GROUP BY service


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

SQL:
SELECT lastname, name, contract_id, service
FROM tbl_service
INNER JOIN tbl_contract ON tbl_service. service_id = tbl_contract.service_id
INNER JOIN tbl_clients ON tbl_contract.client_id=tbl_clients.client_id
WHERE retire_date IS NULL ORDER BY lastname


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

SQL:
SELECT lastname, name, SUM(price)
FROM tbl_service
INNER JOIN tbl_contract ON tbl_service.service_id = tbl_contract.service_id

INNER JOIN tbl_clients ON tbl_contract.client_id=tbl_clients.client_id
WHERE retire_date IS NULL
GROUP BY lastname ORDER BY lastname



* — Согласно спецификации ANSI, для создания объединений предпочтительнее использовать синтаксис INNER JOIN

« Previous | Next »

SQL INNER JOIN (с примерами)

В этом руководстве мы узнаем о SQL INNER JOIN с помощью примеров.

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

Пример

 ВЫБЕРИТЕ Customers.customer_id, Customers.first_name, Orders.amount
ОТ клиентов
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Заказы
ON Customers.customer_id = Orders.customer; 

Вот как работает этот код:

Пример: SQL INNER JOIN

Здесь команда SQL выбирает столбцы customer_id и first_name (из таблицы Customers ) и столбец amount (из таблицы Orders ).

И набор результатов будет содержать те строки, в которых есть совпадение между

customer_id (из таблицы Customers ) и customer (из таблицы Orders ).


Синтаксис ВНУТРЕННЕГО СОЕДИНЕНИЯ

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

 SELECT столбцы
ИЗ таблицы1
ВНУТРЕННЕЕ СОЕДИНЕНИЕ таблица2
ON table1. column_name = table2.column_name; 

INNER JOIN с предложением WHERE

Вот пример INNER JOIN с предложением WHERE:

 SELECT Customers.customer_id, Customers.first_name, Orders.amount
ОТ клиентов
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Заказы
ON Customers.customer_id = Orders.customer
ГДЕ Orders.amount >= 500; 

Здесь команда SQL объединяет две таблицы и выбирает строки, в которых Сумма на больше или равна 500 .


SQL INNER JOIN с псевдонимом AS

Мы можем использовать псевдонимы AS внутри INNER JOIN , чтобы сделать наш фрагмент коротким и чистым. Например,

 SELECT C.cat_name, P.prod_title
ИЗ Категории КАК С
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Продукты AS P
ON C.cat_id= P.cat_id; 

Здесь команда SQL выбирает общие строки между таблицей Категория и Продукты .


ВНУТРЕННЕЕ СОЕДИНЕНИЕ SQL с тремя таблицами

Мы также можем объединить более двух таблиц, используя INNER JOIN . Например,

 ВЫБРАТЬ C.customer_id, C.first_name, O.amount, S.status
ОТ клиентов AS C
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Заказы AS O
ВКЛ C.customer_id = O.клиент
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Доставка AS S
ON C.customer_id = S.customer; 

Здесь команда SQL

  • объединяет таблицы Customers и Orders на основе customer_id
  • и присоединяется к Клиентам и Таблица состояния на основе
    customer_id

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

Примечание: Для запуска этой команды в каждой отдельной таблице должен быть столбец customer_id .


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

Мы также можем использовать JOIN вместо INNER JOIN . По сути, эти два пункта одинаковы.

Значит,

 ВЫБЕРИТЕ Customers. customer_id, Customers.first_name, Orders.amount
ОТ клиентов
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Заказы
ON Customers.customer_id = Orders.customer; 

аналогично

 ВЫБЕРИТЕ Customers.customer_id, Customers.first_name, Orders.amount
ОТ клиентов
ПРИСОЕДИНЯЙТЕСЬ к заказам
ON Customers.customer_id = Orders.customer; 

INNER JOIN выбирает общие строки между двумя таблицами. Принимая во внимание, что LEFT JOIN выбирает общие строки, а также все остальные строки из левой таблицы.

Давайте рассмотрим пример,

INNER JOIN

 SELECT Customers.customer_id, Customers.first_name, Orders.amount
ОТ клиентов
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Заказы
ON Customers.customer_id = Orders.customer; 

Вывод

Пример: SQL INNER JOIN Вывод

LEFT JOIN

 SELECT Customers.customer_id, Customers.first_name, Orders.amount
ОТ клиентов
ЛЕВОЕ СОЕДИНЕНИЕ Заказы
ON Customers.customer_id = Orders. customer; 

Вывод

Пример: SQL LEFT JOIN Вывод

INNER JOIN выбирает общие строки между двумя таблицами. Принимая во внимание, что RIGHT JOIN

выбирает общие строки, а также все остальные строки из правой таблицы.

Давайте рассмотрим пример,

INNER JOIN

 SELECT Customers.customer_id, Customers.first_name, Orders.amount
ОТ клиентов
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Заказы
ON Customers.customer_id = Orders.customer; 

Вывод

Пример: SQL INNER JOIN Вывод

ПРАВОЕ СОЕДИНЕНИЕ

 SELECT Customers.customer_id, Customers.first_name, Orders.amount
ОТ клиентов
ПРАВОЕ СОЕДИНЕНИЕ Заказы
ON Customers.customer_id = Orders.customer_id; 

Вывод

Пример: SQL RIGHT JOIN Вывод

INNER JOIN выбирает общие строки между двумя таблицами. В то время как FULL OUTER JOIN выбирает все строки из обеих таблиц.

Давайте посмотрим на пример,

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

 ВЫБЕРИТЕ Customers.customer_id, Customers.first_name, Orders.amount
ОТ клиентов
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Заказы
ON Customers.customer_id = Orders.customer; 

Вывод

Пример: SQL INNER JOIN Вывод

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

 SELECT Customers.customer_id, Customers.first_name, Orders.amount
ОТ клиентов
ПОЛНОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ Заказы
ON Customers.customer_id = Orders.customer; 

Вывод

Пример: SQL FULL OUTER JOIN Вывод

Рекомендуемые показания

  • SQL JOIN
  • SQL ЛЕВОЕ СОЕДИНЕНИЕ
  • SQL ПРАВОЕ СОЕДИНЕНИЕ
  • SQL ПОЛНОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ

Содержание

Запрос ВНУТРЕННЕГО СОЕДИНЕНИЯ SQL

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

Синтаксис:
 ВЫБРАТЬ table1.column_name(s), table2.column_name(s)
ИЗ таблицы1
ВНУТРЕННЕЕ СОЕДИНЕНИЕ таблица2
ON table1.column_name = table2.column_name;
 

Для демонстрационных целей мы будем использовать следующие таблицы Employee и Department во всех примерах.

Таблица сотрудников

Эмпид Имя Фамилия Электронная почта Зарплата ИД отдела
1 ‘Джон’ ‘Король’ ‘[электронная почта защищена]’ 33000 1
2 ‘Джеймс’ «Бонд»
3 ‘Нина’ ‘Кочхар’ ‘[электронная почта защищена]’ 17000 2
4 ‘Лекс’ ‘Де Хаан’ ‘[электронная почта защищена]’ 15000 1
5 ‘Амит’ ‘Патель’ 18000 3
6 ‘Абдул’ ‘Калам’ ‘[электронная почта защищена]’ 25000 2

Таблица отдела

ИД отдела Имя
1 ‘Финансы’
2 «HR»

Рассмотрим следующий запрос внутреннего соединения.

 SELECT Сотрудник.EmpId, Сотрудник.Имя, Сотрудник.Фамилия, Отдел.Имя
ОТ Сотрудника
ВНУТРЕННЕЕ СОЕДИНЕНИЕ
ON Сотрудник.ОтделId = Отдел.ОтделId;
 

Приведенный выше запрос внутреннего соединения объединяет таблицу Employee и таблицу Department и извлекает записи из обеих таблиц, где Employee.DeptId = Department.DeptId . Он извлекает записи только из обеих таблиц, где DeptId в таблице Employee совпадает с DeptId таблицы Department . Если DeptId имеет значение NULL или не соответствует, то эти записи не будут получены. Ниже приведен результат вышеуказанного запроса.

Таблица сотрудников

Эмпид Имя Фамилия Имя
1 ‘Джон’ ‘Король’ ‘Финансы’
3 ‘Нина’ ‘Кочхар’ «HR»
4 ‘Лекс’ ‘Де Хаан’ ‘Финансы’
6 ‘Абдул’ ‘Калам’ «HR»

Обратите внимание, что отображаются только записи, чей DeptId соответствует, а не те, DeptId которых является нулевым или не соответствует.

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

 SELECT Сотрудник.EmpId, Сотрудник.Имя, Сотрудник.Фамилия, Отдел.Имя
ОТ Департамента
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Сотрудник
ON Department.DeptId = Employee.DeptId;
 

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

 SELECT emp.EmpId, emp.FirstName, emp.LastName, dept.Name
ОТ Отдела отдела, Сотрудник emp
ГДЕ dept.DeptId = emp.DeptId;
 

Псевдонимы можно использовать как сокращения имен таблиц, как показано ниже.

 SELECT emp.EmpId, emp.FirstName, emp.LastName, dept.Name
ОТ Отдела отдела
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Сотрудник
ON dept.DeptId = emp.DeptId;
 

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

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

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

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