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.