Plusieurs jointures

Joindre des données en SQL

Maham Faisal Khan

Senior Content Developer, DataCamp

Jointures sur des jointures

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;

Remarque. Selon le cas, left_table ou right_table peut être utilisé dans la clause ON.

Joindre des données en SQL

Jointures sur des jointures

La table prime_minister_terms de notre base sur les dirigeant·e·s du monde

La table prime_minister_terms, avec deux colonnes : le nom du prime_minister et l'année de son entrée en fonction.

Joindre des données en SQL

Que joindre d'abord ?

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    |
Joindre des données en SQL

Enchaîner les jointures

Schéma montrant l'ensemble de résultats de la fusion de la diapo précédente (presidents et prime_ministers) avec une nouvelle table, prime_minister_terms. Le résultat a cinq colonnes : country, continent, president, prime_minister et pm_start.

Joindre des données en SQL

Enchaîner les jointures

-- 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);
Joindre des données en SQL

Sur quoi fait-on la jointure ?

SELECT * 
FROM left_table
INNER JOIN right_table
ON left_table.id = right_table.id;
Schéma d'un INNER JOIN ON le champ id

Schéma montrant que, lors de l'appariement sur une colonne, le champ de jointure de la table de gauche peut trouver plusieurs correspondances dans la table de droite. L'ensemble de résultats contient plusieurs enregistrements pour chaque id de la table de droite correspondant à la table de gauche.

Joindre des données en SQL

Joindre sur plusieurs clés

SELECT * 
FROM left_table
INNER JOIN right_table
ON left_table.id = right_table.id
    AND left_table.date = right_table.date;
Schéma d'un INNER JOIN ON les champs id ET date

Schéma montrant que le nombre d'enregistrements retournés peut diminuer si l'on utilise plusieurs champs de jointure. Ici, id et date servent à joindre les deux tables.

Joindre des données en SQL

Passons à la pratique !

Joindre des données en SQL

Preparing Video For Download...