Оператор SQL INNER JOIN возвращает строки с точными значениями в двух столбцах двух таблиц. Вы можете объединить таблицу по одному или нескольким столбцам. Операторы JOIN соединяют две таблицы базы данных и сравнивают их содержимое.
Бывают случаи, когда вы хотите получить данные из двух или более таблиц одновременно и объединить результат.
Например, вы можете получить список продуктов и имена поставщиков, которые поставили эти продукты. Информация о названиях продуктов и названиях поставщиков находится в двух таблицах.
Здесь на помощь приходят соединения SQL. Используя условие соединения, вы можете объединить информацию из нескольких таблиц в следующее: один набор результатов. SQL INNER JOIN — это тип соединения, которое возвращает записи, которые имеют совпадающие значения столбцов в двух таблицах. В этом руководстве мы собираемся обсудить, как использовать INNER JOIN.
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.