Sous-requêtes avec semi-jointures et anti-jointures

Jointure de données dans SQL

Maham Faisal Khan

Senior Content Developer, DataCamp

Appel à toutes les jointures

Diagramme d’une jointure interne sur le champ id

Un diagramme montrant deux tables : left_table et right_table. Le résultat de l’association des deux requêtes est indiqué à droite. Seuls les enregistrements correspondant à la colonne id des deux tables sont renvoyés.

Jointure de données dans SQL

Jointures additives

SELECT *
FROM left_table
INNER JOIN right_table
ON left_table.id = right_table.id;
Jointure de données dans SQL

Jointures additives

Un diagramme expliquant une jointure additive. Sur le côté gauche, deux tables, left_table et right_table, sont affichées. À droite, le résultat d’une jointure interne utilisant une colonne id sur les deux tables est affiché. Les champs portant des noms différents sont ajoutés avec leur nom d’origine. Comme le champ date apparaît dans les deux tables, il est ajouté deux fois.

Jointure de données dans SQL

Semi-jointure

Une semi-jointure sélectionne les enregistrements de la première table lorsqu’une condition est remplie dans la deuxième table.

Un diagramme montrant deux tables, left_table et right_table, qui seront utilisées pour démontrer une semi-jointure, où left_table contient deux colonnes, id et col1, et right_table contient une seule colonne, col2.

Jointure de données dans SQL

Semi-jointure

Un diagramme montrant deux tables, left_table et right_table, qui sont utilisées pour démontrer une semi-jointure, où col2 sera utilisé pour filtrer col1. Les enregistrements dans left_table où col1 ne trouve pas de correspondance dans col2 ont été floutés.

Jointure de données dans SQL

Semi-jointure

Un diagramme montrant deux tables, left_table et right_table. Le résultat d’une semi-jointure sur les deux tables est indiqué à droite. Seuls les enregistrements de left_table pour lesquels col1 trouve une correspondance dans col2 ont été renvoyés. Ils correspondent aux valeurs 2 et 3 du champ id.

Jointure de données dans SQL

Démarrer la semi-jointure

SELECT country, continent, president
FROM presidents;
| country  | continent     | president               |
| -------- | ------------- | ----------------------- |
| Egypt    | Africa        | Abdel Fattah el-Sisi    |
| Portugal | Europe        | Marcelo Rebelo de Sousa | 
| USA      | North America | Joe Biden               |
| Uruguay  | South America | Luis Lacalle Pou        |
| Pakistan | Asia          | Asif Ali Zardari        |
| Chile    | South America | Gabriel Boric           |
| India    | Asia          | Droupadi Murmu          |
Jointure de données dans SQL

Étendre la semi-jointure

SELECT country
FROM states
WHERE indep_year < 1800;
|----------|
| country  |
|----------|
| Portugal |
| Spain    |
|----------|
Jointure de données dans SQL

Terminer la semi-jointure (une introduction aux sous-requêtes)

SELECT president, country, continent
FROM presidents
WHERE country IN
    (SELECT country
     FROM states
     WHERE indep_year < 1800);
|-------------------------|-----------|-------------|
| president               | country   | continent   |
|-------------------------|-----------|-------------|
| Marcelo Rebelo de Sousa | Portugal  | Europe      |
|-------------------------|-----------|-------------|
Jointure de données dans SQL

Anti-jointure

Un diagramme montrant deux tables, left_table et right_table, utilisées pour démontrer une anti-jointure, où col2 sera utilisé pour filtrer col1. Les enregistrements de left_table pour lesquels col1 ne trouve pas de correspondance dans col2 n’ont pas été floutés.

Jointure de données dans SQL

Anti-jointure

Un diagramme montrant deux tables, left_table et right_table. Le résultat d’une anti jointure sur les deux tables est indiqué à droite. Seuls les enregistrements de left_table pour lesquels col1 ne trouve pas de correspondance dans col2 ont été renvoyés. Ils correspondent aux valeurs 1 et 4 du champ id.

Jointure de données dans SQL

Une anti-jointure avec les présidents

SELECT country, president
FROM presidents
WHERE continent LIKE '%America' 
    AND country NOT IN
        (SELECT country
         FROM states
         WHERE indep_year < 1800);
| country  |  president       |
| -------- | ---------------- | 
| Uruguay  | Luis Lacalle Pou |
| Chile    | Gabriel Boric    |
Jointure de données dans SQL

Passons à la pratique !

Jointure de données dans SQL

Preparing Video For Download...