Les jointures internes INNER JOIN ou les jointures égales sont des jointures qui incluent uniquement les lignes où les valeurs des colonnes jointes correspondent.
Vous pouvez coder les jointures internes soit par syntaxe implicite, soit par syntaxe explicite.
Syntaxe : implicite
SELECT nom_colonne(s)
FROM table1
INNER JOIN table2
ON table1.nom_colonne = table2.nom_colonne;
Syntaxe : explicite
SELECT nom_colonne(s)
FROM table1, table2
WHERE table1.nom_colonne = table2.nom_colonne;
Base de données DB2 :
Examinons les données du tableau “Commandes” ci-dessous :
Numéro-Commande | Numéro-Client | Date-Commande |
---|---|---|
1001 | 10 | 2020-09-08 |
1002 | 99 | 2020-09-01 |
1003 | 17 | 2020-08-25 |
1004 | 76 | 2020-09-19 |
1005 | 44 | 2020-09-25 |
Examinons les données du tableau “Clients” ci-dessous :
Numéro-Client | Nom-Client | Pays |
---|---|---|
76 | Jack | Amérique |
17 | Jancy | Allemagne |
20 | Carmen | Russie |
10 | robert | Inde |
99 | Brian | Chine |
Notez que la colonne « Numéro de client » dans la table « Commandes » fait référence au « Numéro de client » dans la table « Clients ». La relation entre les deux tables ci-dessus est la colonne “Numéro-Client”.
Voyons comment créer une instruction SQL qui sélectionne les enregistrements dont les valeurs correspondent dans les deux tables.
L’instruction SQL suivante sélectionne toutes les commandes avec des informations client.
Exemple:
SELECT Commandes.Numero_Commande, Clients.Nom_Client, Commandes.Date_Commande
FROM Commandes
INNER JOIN Clients ON Commandes.Numero_Client=Clients.Numero_Client;
Le mot clé INNER JOIN sélectionne toutes les lignes des deux tables tant qu’il existe une correspondance entre les colonnes. S’il y a des enregistrements dans la table “Commandes” qui n’ont pas de correspondance dans “Clients”, ces commandes ne seront pas affichées.
Résultat:
Numéro-Commande | Nom-Client | Date-Commande |
---|---|---|
1001 | robert | 2020-09-08 |
1002 | Brian | 2020-09-01 |
1003 | Jancy | 2020-08-25 |
1004 | Jack | 2020-09-19 |
L’instruction SQL suivante est identique à l’exemple d’instruction SQL ci-dessus.
SELECT Commandes.Numero_Commande, Clients.Nom_Client, Commandes.Date_Commande
FROM Commandes, Clients
Where Commandes.Numero_Client = Clients.Numero_Client;