Статья Автор: Деникина Н.В., Деникин А.В.

Виды соединений в SQL: INNER JOIN

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

Имеются две таблицы:

  1. Таблица employees (Сотрудники):

    employee_id | name       | department_id
    -----------------------------------------
    1           | Alice      | 1
    2           | Bob        | 2
    3           | Charlie    | 3
    4           | David      | NULL
    
  2. Таблица 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

  1. Чёткий результат: Возвращаются только те данные, которые имеют совпадения.
  2. Оптимизация работы с данными: Исключаются строки, не имеющие отношений, что может быть полезно для анализа.
  3. Гибкость: Можно соединять несколько таблиц и фильтровать результат.

Заключение

INNER JOIN в SQLite — это мощный инструмент для объединения данных из двух или более таблиц. Он широко применяется при работе с реляционными базами данных, так как позволяет извлекать только те строки, которые имеют логическую связь между таблицами. Это делает запросы удобными и эффективными для анализа и обработки данных.

Пропустить Навигационные Ссылки.
Чтобы оставить комментарий нужна авторизация
Печать