Wielokrotne złączenia

Łączenie danych w SQL

Maham Faisal Khan

Senior Content Developer, DataCamp

Złączenia na złączeniach

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;

Uwaga. W zależności od przypadku użycia, left_table lub right_table może być użyta w klauzuli ON.

Łączenie danych w SQL

Złączenia na złączeniach

Tabela prime_minister_terms z bazy danych światowych przywódców

Tabela prime_minister_terms z dwiema kolumnami: nazwisko premiera i rok objęcia urzędu.

Łączenie danych w SQL

Co złączyć jako pierwsze?

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    |
Łączenie danych w SQL

Łańcuchowanie złączeń

Diagram pokazujący wynik złączenia z poprzedniego slajdu (presidents i prime_ministers) z nową tabelą prime_minister_terms. Wynik zawiera pięć kolumn: country, continent, president, prime_minister i pm_start.

Łączenie danych w SQL

Łańcuchowanie złączeń

-- 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);
Łączenie danych w SQL

Na jakiej podstawie łączymy?

SELECT * 
FROM left_table
INNER JOIN right_table
ON left_table.id = right_table.id;
Diagram dla INNER JOIN ON pole id

Diagram pokazujący, że przy dopasowaniu na jednej kolumnie rekord z lewej tabeli może mieć wiele dopasowań w prawej tabeli. Wynik zawiera wiele rekordów dla każdego id z prawej tabeli, które pasuje do lewej.

Łączenie danych w SQL

Złączenie na wielu kluczach

SELECT * 
FROM left_table
INNER JOIN right_table
ON left_table.id = right_table.id
    AND left_table.date = right_table.date;
Diagram dla INNER JOIN ON polach id i date

Diagram pokazujący, że użycie wielu pól złączenia zmniejsza liczbę zwracanych rekordów. Tutaj do złączenia tabel użyto zarówno id, jak i date.

Łączenie danych w SQL

Czas na ćwiczenia!

Łączenie danych w SQL

Preparing Video For Download...