Multipla joins

Att joina data i SQL

Maham Faisal Khan

Senior Content Developer, DataCamp

Joins på joins

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;

Obs. Beroende på användningsfall kan left_table eller right_table användas i ON-satsen.

Att joina data i SQL

Joins på joins

Tabellen prime_minister_terms från vår databas över världsledare

Tabellen prime_minister_terms med två kolumner: statsministerns namn och året de tillträdde.

Att joina data i SQL

Vad joinar man först?

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    |
Att joina data i SQL

Kedja joins

Ett diagram som visar resultatmängden från föregående slides sammanslagning (presidents och prime_ministers) med en ny tabell, prime_minister_terms. Resultatet består av fem kolumner: country, continent, president, prime_minister och pm_start.

Att joina data i SQL

Kedja joins

-- 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);
Att joina data i SQL

Vad joinar vi ON?

SELECT * 
FROM left_table
INNER JOIN right_table
ON left_table.id = right_table.id;
Diagram för en INNER JOIN ON fältet id

Ett diagram som visar att när man matchar på en kolumn kan det hända att joinningsfältet från vänster tabell hittar flera träffar i joinningsfältet från höger tabell. Resultatmängden innehåller flera poster för varje id i höger tabell som matchade med vänster tabell.

Att joina data i SQL

Joina på flera nycklar

SELECT * 
FROM left_table
INNER JOIN right_table
ON left_table.id = right_table.id
    AND left_table.date = right_table.date;
Diagram för en INNER JOIN ON fälten id OCH date

Ett diagram som visar att antalet poster i resultatmängden kan minskas om flera joinningsfält används. Här används både id och date för att joina de två tabellerna.

Att joina data i SQL

Nu kör vi en övning!

Att joina data i SQL

Preparing Video For Download...