INNER JOIN
— это один из самых часто используемых видов соединений в SQL, включая SQLite. Он объединяет строки из двух таблиц, возвращая только те строки, которые удовлетворяют условию соединения. Если соответствия в одной из таблиц отсутствуют, такие строки не включаются в результат.
Синтаксис INNER JOIN в SQLite
SELECT column_list
FROM table1
INNER JOIN table2
ON table1.column_name = table2.column_name;
column_list
— список столбцов, которые нужно извлечь.
table1
и table2
— таблицы, которые объединяются.
ON
— условие соединения, указывающее, какие столбцы связаны между таблицами.
Особенности INNER JOIN
- Возвращаются только те строки, которые имеют совпадения в обеих таблицах.
- Условие соединения обычно задаётся с использованием первичного и внешнего ключей.
- Если совпадений нет, строка не включается в результат.
Пример использования INNER JOIN
Имеются две таблицы:
-
Таблица employees
(Сотрудники):
employee_id | name | department_id
-----------------------------------------
1 | Alice | 1
2 | Bob | 2
3 | Charlie | 3
4 | David | NULL
-
Таблица departments
(Отделы):
department_id | department_name
--------------------------------
1 | IT
2 | Sales
3 | HR
4 | Marketing
Запрос: Получение имени сотрудника и названия отдела, в котором он работает
SELECT employees.name AS employee_name, departments.department_name
FROM employees
INNER JOIN departments
ON employees.department_id = departments.department_id;
Результат:
employee_name | department_name
--------------------------------
Alice | IT
Bob | Sales
Charlie | HR
- Строка с
David
исключена, так как у неё department_id = NULL
(нет совпадений в таблице departments
).
INNER JOIN с выборкой из нескольких таблиц
SQLite позволяет использовать INNER JOIN
для соединения более чем двух таблиц.
Дополнительная таблица: projects
(Проекты):
project_id | project_name | department_id
-----------------------------------------------
1 | Website Redesign | 1
2 | New Sales Campaign | 2
3 | HR Policy Update | 3
4 | Product Launch | 4
Запрос: Получить имя сотрудника, название его отдела и проект отдела
SELECT employees.name AS employee_name, departments.department_name, projects.project_name FROM employees
INNER JOIN departments
ON employees.department_id = departments.department_id
INNER JOIN projects
ON departments.department_id = projects.department_id;
Результат:
employee_name | department_name | project_name
-----------------------------------------------
Alice | IT | Website Redesign
Bob | Sales | New Sales Campaign
Charlie | HR | HR Policy Update
- Данные из всех трёх таблиц объединены с использованием условий соединения.
Использование INNER JOIN с фильтрацией (WHERE)
Вы можете комбинировать INNER JOIN
с фильтрацией данных, используя WHERE
.
Пример: Найти всех сотрудников, работающих в отделе "IT".
SELECT employees.name AS employee_name
FROM employees
INNER JOIN departments
ON employees.department_id = departments.department_id
WHERE departments.department_name = 'IT';
Результат:
employee_name
--------------
Alice
Преимущества использования INNER JOIN
- Чёткий результат: Возвращаются только те данные, которые имеют совпадения.
- Оптимизация работы с данными: Исключаются строки, не имеющие отношений, что может быть полезно для анализа.
- Гибкость: Можно соединять несколько таблиц и фильтровать результат.
Заключение
INNER JOIN
в SQLite — это мощный инструмент для объединения данных из двух или более таблиц. Он широко применяется при работе с реляционными базами данных, так как позволяет извлекать только те строки, которые имеют логическую связь между таблицами. Это делает запросы удобными и эффективными для анализа и обработки данных.