Множественные объединения

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

Maham Faisal Khan

Senior Content Developer, DataCamp

Объединения поверх объединений

SELECT *
FROM left_table
INNER JOIN right_table
ON left_table.id = right_table.id

INNER JOIN another_table ON left_table.id = another_table.id;

Примечание. В зависимости от задачи в условии ON можно использовать left_table или right_table.

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

Объединения поверх объединений

Таблица prime_minister_terms из базы данных мировых лидеров

Таблица prime_minister_terms с двумя столбцами: имя премьер-министра и год вступления в должность.

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

Что объединять первым?

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

Цепочка объединений

Диаграмма, показывающая результат объединения таблиц presidents и prime_ministers из предыдущего слайда с новой таблицей prime_minister_terms. Результат содержит пять столбцов: country, continent, president, prime_minister и pm_start.

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

Цепочка объединений

-- SQL query for chaining inner joins
SELECT 
    p1.country, 
    p1.continent, 
    president, 
    prime_minister, 
    pm_start
FROM prime_ministers as p1
INNER JOIN presidents as p2
USING(country)

INNER JOIN prime_minister_terms as p3 USING(prime_minister);
Объединение данных в SQL

По какому условию выполняется объединение?

SELECT * 
FROM left_table
INNER JOIN right_table
ON left_table.id = right_table.id;
Диаграмма INNER JOIN ON по полю id

Диаграмма, показывающая, что при объединении по одному столбцу запись из левой таблицы может соответствовать нескольким записям правой таблицы. В результирующем наборе появляется несколько строк для каждого совпавшего id.

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

Объединение по нескольким ключам

SELECT * 
FROM left_table
INNER JOIN right_table
ON left_table.id = right_table.id
    AND left_table.date = right_table.date;
Диаграмма INNER JOIN ON по полям id и date

Диаграмма, показывающая, что использование нескольких полей для объединения сокращает количество возвращаемых записей. Здесь для объединения таблиц используются оба поля — id и date.

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

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

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

Preparing Video For Download...