Passer au contenu principal

Jointure SQL

Considérons les tables suivantes :

customers :

ID first_name last_name
1 first_name_1 last_name_1
2 first_name_2 last_name_2
3 first_name_3 last_name_3
4 first_name_4 last_name_4

orders :

ID checkout_at customer_id
1 01/11/2022 2
2 04/12/2022 3
3 12/04/2023 3
4 27/07/2023 2

 

Comprendre INNER JOIN en SQL

Utilisez INNER JOIN lorsque vous souhaitez obtenir uniquement les enregistrements qui ont une correspondance dans les deux tables.

La requête SQL serait :

SELECT customers.ID, checkout_at, first_name, last_name 
FROM customers 
INNER JOIN orders 
ON customers.ID = orders.customer_id;

Les ID en commun sont : 2 et 3

Le résultat serait :

2, 01/11/2022, first_name_2, last_name_2
3, 04/12/2022, first_name_3, last_name_3
3, 12/04/2023, first_name_3, last_name_3
2, 27/07/2023, first_name_2, last_name_2

 

Comprendre LEFT JOIN en SQL

Utilisez LEFT JOIN lorsque vous voulez récupérer tous les enregistrements de la table « gauche », qu’ils aient ou non une correspondance dans la table « droite ».

Notez que la table « gauche » est celle qui est définie dans la clause FROM de la requête SQL.

La requête SQL serait :

SELECT customers.ID, checkout_at, first_name, last_name 
FROM customers 
LEFT JOIN orders 
ON customers.ID = orders.customer_id;

Le résultat inclurait tous les clients, même ceux qui n’ont pas passé de commande. Pour les clients sans commande, les champs checkout_at seraient NULL. Voici à quoi pourrait ressembler le résultat :

1, NULL,       first_name_1, last_name_1
2, 01/11/2022, first_name_2, last_name_2
2, 27/07/2023, first_name_2, last_name_2
3, 04/12/2022, first_name_3, last_name_3
3, 12/04/2023, first_name_3, last_name_3
4, NULL,       first_name_4, last_name_4

Comme vous pouvez le voir, le client avec l’ID 1 et le client avec l’ID 4 n’ont pas de commandes associées, donc la date de commande checkout_at est NULL pour ces enregistrements.


Aucune page ou chapitre n'a été ajouté à cet article.