... JOIN ... ON ...

Généralités

Les jointures permettent de faire des requêtes dans une table temporaire issue de la fusion de plusieurs tables suivant une condition donnée.

La syntaxe de la jointure est : table_A JOIN table_B ON condition.

La table temporaire obtenue dispose de l'ensemble des attributs des deux tables dont on fait la jointure.

Les jointures sont en générale utilisées avec des tables liées par des clés étrangères.

Exemple détaillé

• Considérons les deux tables suivantes où l'attribut client de la table Commandes est une clé étrangère liée à la table Clients :

Table Clients
id_client prénom nom
1 Alain Térieur
2 Jean Naymar
3 Nadine Greux
4 Alphonse Danleuta
Table Commandes
id_commande client date montant
1 1 2015-08-23 45
2 1 2015-09-253 102
3 4 2015-10-15 63
4 3 2015-10-29 113
5 2 2015-11-18 28

• La jointure Clients JOIN Commandes ON Clients.id_client = Commandes.client va créer la table temporaire suivante :

id_client prénom nom id_commande client date montant
1 Alain Térieur 1 1 2015-08-23 45
1 Alain Térieu 2 1 2015-09-253 102
4 Alphonse Danleuta 3 4 2015-10-15 63
3 Nadine Greux 4 3 2015-10-29 113
2 Jean Naymar 4 2 2015-11-18 28

On observe que les valeurs des attributs id_client et client sont bien égales.

 

• Il est possible de faire des requêtes avec cette table.

Ainsi, la requête suivante :

SELECT prénom, nom
FROM Clients JOIN Commandes ON Clients.id_client = Commandes.client
WHERE montant >= 100;

renvoie le résultat suivant :

prénom nom montant
Alain Térieur 102
Nadine Greux 113

Remarques

Référence aux tables

L'utilisation d'un attribut dans une requête, même avec jointure, ne nécessite pas, lorsqu'il n'y a pas d'ambiguïté, de préciser la table de l'attribut. Cependant, pour plus de clarté, cela est souhaitable, voir indispensable si deux attributs ont le même intitulé.

Ainsi, la requête de l'exemple précédent pourrait s'écrire :

SELECT prénom, nom
FROM Clients JOIN Commandes ON id_client = client
WHERE montant >= 100;

Utilisation des alias (voir AS)

Les alias sont utilises :