INNER JOIN в Oracle SQL: как правильно объединять таблицы по общим значениям

🟢 Введение

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

Важно понимать, как работает INNER, чтобы избежать потери данных или ошибок при объединении.


🔤 Написание

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

sql
SELECT столбцы
FROM таблица1
INNER JOIN таблица2
ON таблица1.поле = таблица2.поле;

Пример:

sql
SELECT e.first_name, d.department_name
FROM employees e
INNER JOIN departments d ON e.department_id = d.department_id;

🔄 Где часто используется

  • В связанных запросах между таблицами

  • При создании представлений и отчётов

  • В аналитических запросах

  • Для отфильтрованных выборок, где нужны только совпадающие значения

  • При нормализации данных (разнесение информации по таблицам)


🧪 10 Примеров использования INNER с пояснениями

1️⃣ INNER JOIN двух таблиц

sql
SELECT e.first_name, d.department_name
FROM employees e
INNER JOIN departments d ON e.department_id = d.department_id;

Выводит сотрудников и их отделы.


2️⃣ INNER JOIN с WHERE

sql
SELECT o.order_id, c.name
FROM orders o
INNER JOIN customers c ON o.customer_id = c.customer_id
WHERE c.country = 'Germany';

Показывает заказы клиентов из Германии.


3️⃣ INNER JOIN с тремя таблицами

sql
SELECT o.order_id, c.name, p.product_name
FROM orders o
INNER JOIN customers c ON o.customer_id = c.customer_id
INNER JOIN products p ON o.product_id = p.product_id;

Соединение заказов, клиентов и товаров.


4️⃣ INNER JOIN с псевдонимами

sql
SELECT e.first_name, j.job_title
FROM employees e
INNER JOIN jobs j ON e.job_id = j.job_id;

Сотрудники и их должности.


5️⃣ INNER JOIN с функцией агрегирования

sql
SELECT d.department_name, COUNT(*) AS total_employees
FROM departments d
INNER JOIN employees e ON d.department_id = e.department_id
GROUP BY d.department_name;

Сколько сотрудников в каждом отделе.


6️⃣ INNER JOIN в подзапросе

sql
SELECT *
FROM (
SELECT e.first_name, d.department_name
FROM employees e
INNER JOIN departments d ON e.department_id = d.department_id
) result
WHERE result.department_name LIKE 'S%';

Выбираем сотрудников из отделов на «S».


7️⃣ INNER JOIN с условием неравенства

sql
SELECT e1.first_name, e2.first_name AS manager_name
FROM employees e1
INNER JOIN employees e2 ON e1.manager_id = e2.employee_id;

Сотрудники и их менеджеры (самосоединение).


8️⃣ INNER JOIN с USING

sql
SELECT *
FROM employees
INNER JOIN departments USING (department_id);

Если у таблиц есть столбец с одинаковым названием.


9️⃣ INNER JOIN во VIEW

sql
CREATE OR REPLACE VIEW employee_department_view AS
SELECT e.employee_id, e.first_name, d.department_name
FROM employees e
INNER JOIN departments d ON e.department_id = d.department_id;

Создание представления на основе объединения.


🔟 INNER JOIN с фильтрацией по дате

sql
SELECT o.order_id, c.name
FROM orders o
INNER JOIN customers c ON o.customer_id = c.customer_id
WHERE o.order_date >= TO_DATE('01-01-2024', 'DD-MM-YYYY');

Заказы за 2024 год с указанием клиента.


🧩 Заключение

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

Если вы уверены, что должны видеть только полные совпадения — используйте INNER JOIN.


🔜 Следующая статья:

Оператор LEFT в Oracle SQL — как объединять таблицы с сохранением всех записей из левой таблицы

Понравилась статья? Поделиться с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии