92
Chapitre 5 • Le langage SQL DML
Conceptuellement, le résultat pourrait être obtenu comme suit :
1. On construit une table en couplant chaque ligne de la première table à chaque
ligne de la seconde :
from COMMANDE, CLIENT.
Cette table contient 6 + 3 = 9 colonnes et 16 x 7 = 112 lignes.
2. On sélectionne, parmi les lignes ainsi obtenues, celles qui vérifient la condition
d’association (ainsi que les autres conditions éventuelles) :
where COMMANDE.NCLI = CLIENT.NCLI,
3. On ne retient alors que les colonnes demandées :
select NCOM, CLIENT.NCLI, DATECOM, NOM, LOCALITE.
En général, le SGBD ne procède pas de la sorte, car il en résulterait le plus souvent
une grande inefficacité. Cependant, quelle que soit la manière dont le SGBD
retrouve les données demandées, le résultat sera le même.
Par extension, la jointure de trois tables réclamera deux conditions d’association.
L’ordre des tables dans la clause from est indifférent, de même que celui des conditions dans la clause where.
select CLIENT.NCLI, NOM, DATECOM, NPRO
from
CLIENT, COMMANDE, DETAIL
where CLIENT.NCLI = COMMANDE.NCLI
and
COMMANDE.NCOM = DETAIL.NCOM
On peut avancer deux interprétations équivalentes de cette requête :
1. comme ci-dessus, on constitue une table dont les lignes sont formées d’une ligne de chacune des trois tables de la clause from; on ne retient que celles qui
vérifient la clause where;
2. on effectue la jointure de deux tables (par exemple CLIENT et COMMANDE);
ensuite, on effectue une deuxième jointure de ce résultat avec la troisième table (DETAIL).
5.4.2 Conditions de jointure et conditions de sélection
Les conditions telles que COMMANDE.NCLI = CLIENT.NCLI apparaissant dans les
requêtes de jointure sont appelée conditions de jointure, car elles régissent les assoNCOM
NCLI
DATECOM
NOM
LOCALITE
30178
30179
30182
30184
30185
30186
30188
K111
C400
S127
C400
F011
C400
B512
21/12/2005
22/12/2005
23/12/2005
23/12/2005
2/01/2006
2/01/2006
3/01/2006
VANBIST
FERARD
VANDERKA
FERARD
PONCELET
FERARD
GILLET
Lille
Poitiers
Namur
Poitiers
Toulouse
Poitiers
Toulouse
Précédent

- 92/436

Suivant