SQL INNER JOIN

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-CommandeNuméro-ClientDate-Commande
1001102020-09-08
1002992020-09-01
1003172020-08-25
1004762020-09-19
1005442020-09-25

Examinons les données du tableau “Clients” ci-dessous :

Numéro-ClientNom-ClientPays
76JackAmérique
17JancyAllemagne
20CarmenRussie
10robertInde
99BrianChine

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-CommandeNom-ClientDate-Commande
1001robert2020-09-08
1002Brian2020-09-01
1003Jancy2020-08-25
1004Jack2020-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;