Кілька зʼєднань

Об'єднання даних у 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 з двома стовпцями: імʼя prime_minister і рік вступу на посаду.

Об'єднання даних у 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-запит для ланцюжка внутрішніх зʼєднань
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 за полем 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 за полями id ТА date

Схема показує, що кількість записів у результаті можна зменшити, якщо використати кілька полів зʼєднання. Тут для зʼєднання двох таблиць застосовано і id, і date.

Об'єднання даних у SQL

Давайте потренуємось!

Об'єднання даних у SQL

Preparing Video For Download...