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

Jointure de données en SQL

Maham Faisal Khan

Senior Content Developer, DataCamp

Appel à toutes les jointures

Diagramme pour un INNER JOIN sur le champ id

Un diagramme montrant deux tableaux : 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 tableaux sont renvoyés.

Jointure de données en SQL

Joints additifs

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

Joints additifs

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

Jointure de données en SQL

Jointure partielle

Une jointure partielle sélectionne les enregistrements du premier tableau lorsqu'une condition est remplie dans le second tableau.

Un diagramme montrant deux tableaux, left_table et right_table, qui seront utilisés pour démontrer une semi jointure. left_table contient deux colonnes, id et col1. right_table contient une seule colonne, col2.

Jointure de données en SQL

Jointure partielle

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

Jointure de données en SQL

Jointure partielle

Un diagramme montrant deux tableaux, left_table et right_table. Le résultat d'une jointure partielle sur les deux tableaux est indiqué à droite. Seuls les enregistrements de la table gauche pour lesquels col1 trouve une correspondance dans col2 ont été renvoyés. Ils correspondent aux identifiants 2 et 3.

Jointure de données en SQL

Le coup d'envoi de notre demi-jonction

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 en SQL

En s'appuyant sur notre projet de jumelage, nous avons mis en place un système de gestion de l'information.

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

Terminer la jointure partielle (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 en SQL

Anti-jonction

Un diagramme montrant deux tableaux, left_table et right_table, qui sont utilisés pour démontrer une antijonction. col2 sera utilisé pour filtrer col1. Les enregistrements de la table gauche pour lesquels col1 ne trouve pas de correspondance dans col2 ont été supprimés à l'adresse NOT.

Jointure de données en SQL

Anti-jonction

Un diagramme montrant deux tableaux, left_table et right_table. Le résultat d'une anti jointure sur les deux tableaux 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 numéros d'identification 1 et 4.

Jointure de données en SQL

Un anti rejoint 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 en SQL

Passons à la pratique !

Jointure de données en SQL

Preparing Video For Download...