Всё об INNER JOIN

Объединение данных в SQL

Maham Faisal Khan

Senior Content Developer, DataCamp

Всё об INNER JOIN

Диаграмма двух таблиц: левой и правой. Совпадающие значения id выделены одинаковыми цветами.

Объединение данных в SQL

Всё об INNER JOIN

  • INNER JOIN ищет записи в обеих таблицах, которые совпадают по заданному полю
Диаграмма INNER JOIN по полю id

Диаграмма двух таблиц: left_table и right_table. Совпадающие значения id выделены одинаковыми цветами и соединены стрелками.

Объединение данных в SQL

Всё об INNER JOIN

Диаграмма INNER JOIN ON по полю id

Диаграмма двух таблиц: left_table и right_table. Совпадающие значения id выделены одинаковыми цветами и соединены стрелками. Записи, не входящие в результат INNER JOIN, затемнены.

Объединение данных в SQL

Всё об INNER JOIN

Диаграмма INNER JOIN ON по полю id

Диаграмма двух таблиц: left_table и right_table. Результат объединения показан справа — возвращаются только записи, совпавшие по столбцу id в обеих таблицах.

Объединение данных в SQL

Схема базы данных leadership

Мировые лидеры по состоянию на 2024 год: Схема SQL с тремя таблицами базы данных leadership: presidents, prime_ministers и prime_minister_terms. Таблицы presidents и prime_ministers можно объединить по полю country, а prime_ministers и prime_minister_terms — по полю prime_minister.

Объединение данных в SQL

Таблица presidents

SELECT * 
FROM presidents;
| country  | continent     | president               |
|----------|---------------|-------------------------|
| Egypt    | Africa        | Abdel Fattah el-Sisi    |
| Portugal | Europe        | Marcelo Rebelo de Sousa | 
| USA      | North America | Joe Biden               |
| Uruguay  | South America | Luis Lacalle Pou        |
| Pakistan | Asia          | Asif Ali Zardari        |
| Chile    | South America | Gabriel Boric           |
| India    | Asia          | Droupadi Murmu          |
Объединение данных в SQL

Знакомство с премьер-министрами

Таблица prime_ministers

Таблица prime_ministers из базы данных leadership, содержащая три столбца: country, continent и prime_minister.

Объединение данных в SQL

Премьер-министры знакомятся с президентами

Таблица presidents

Две таблицы рядом: presidents и prime_minister. Совпадающие столбцы выделены цветом.

Таблица prime_ministers

Две таблицы рядом: presidents и prime_minister. Совпадающие столбцы выделены цветом.

Объединение данных в SQL

Наш первый INNER JOIN

--Inner join of presidents and prime_ministers, joining on country

SELECT prime_ministers.country, prime_ministers.continent, prime_minister, president
FROM presidents
INNER JOIN prime_ministers
ON presidents.country = prime_ministers.country;

Примечание. Формат table.column_name обязателен при выборе столбцов, присутствующих в обеих таблицах, — иначе возникнет ошибка SQL.

| country        | continent | prime_minister   | president               |
|----------------|-----------|------------------|-------------------------|
| Egypt          | Africa    | Mostafa Madbouly | Abdel Fattah el-Sisi    |
| Portugal       | Europe    | Luís Montenegro  | Marcelo Rebelo de Sousa |
| Pakistan       | Asia      | Shehbaz Sharif   | Asif Ali Zardari        |
| India          | Asia      | Narendra Modi    | Ram Nath Kovind         |
Объединение данных в SQL

Псевдонимы таблиц

--Inner join of presidents and prime_ministers, joining on country

SELECT p2.country, p2.continent, prime_minister, president
FROM presidents AS p1 INNER JOIN prime_ministers AS p2
ON p1.country = p2.country;
| country        | continent | prime_minister   | president               |
|----------------|-----------|------------------|-------------------------|
| Egypt          | Africa    | Mostafa Madbouly | Abdel Fattah el-Sisi    |
| Portugal       | Europe    | Luís Montenegro  | Marcelo Rebelo de Sousa |
| Pakistan       | Asia      | Shehbaz Sharif   | Asif Ali Zardari        |
| India          | Asia      | Narendra Modi    | Ram Nath Kovind         |

Псевдонимы можно использовать в синтаксисе table.column_name в предложениях SELECT и ON.

Объединение данных в SQL

Использование USING

--Inner join of presidents and prime_ministers, joining on country
SELECT p2.country, p2.continent, prime_minister, president
FROM presidents AS p1
INNER JOIN prime_ministers AS p2
USING(country);
| country        | continent | prime_minister   | president               |
|----------------|-----------|------------------|-------------------------|
| Egypt          | Africa    | Mostafa Madbouly | Abdel Fattah el-Sisi    |
| Portugal       | Europe    | Luís Montenegro  | Marcelo Rebelo de Sousa |
| Pakistan       | Asia      | Shehbaz Sharif   | Asif Ali Zardari        |
| India          | Asia      | Narendra Modi    | Ram Nath Kovind         |
Объединение данных в SQL

Давайте потренируемся!

Объединение данных в SQL

Preparing Video For Download...