6.3 Extension de la structure des requêtes SFW
141
© Dunod – La photocopie non autorisée est un délit.
from
CLIENT inner join COMMANDE using (NCLI)
➤ Outer join
La section 5.4.4 introduisait la possibilité d’ajouter au résultat d’une jointure les
lignes célibataires d’une des tables, c’est-à-dire les lignes qui n’ont pas de correspondant dans l’autre table. Cette extension de la jointure s’appelle jointure externe,
par opposition à la jointure classique, dite interne. Ainsi, la requête de la section
5.4.4, qu’on rappelle :
select NCOM, C.NCLI, DATECOM, NOM, LOCALITE
from
COMMANDE M, CLIENT C
where M.NCLI = C.NCLI
union
select null, NCLI, null, NOM, ADRESSE
from
CLIENT
where NCLI not in (select NCLI from COMMANDE)
peut être écrite de manière plus compacte et plus claire sous la forme :
select NCOM, C.NCLI, DATECOM, NOM, LOCALITE
from
COMMANDE M right outer join CLIENT C
on (M.NCLI = C.NCLI)
Le terme right outer join indique qu’on inclut les lignes célibataires de la table
de droite (CLIENT) dans le résultat. Il existe une version left outer join qui
préserve les lignes célibataires de la table de gauche et full outer join qui
conserve les lignes célibataires des deux tables.
Cette syntaxe n’est pas adoptée par tous les SGBD. C’est ainsi qu’Oracle utilise
une variante de la jointure standard, illustrée ci-dessous par la reprise de la dernière
requête. Le côté célibataire y est indiqué par le symbole "(+)".
select NCOM, C.NCLI, DATECOM, NOM, LOCALITE
from
COMMANDE M, CLIENT C
where M.NCLI = (+) C.NCLI
Conclusion. Il semble que seules les formes d’outer join apportent réellement
plus de facilité dans l’écriture des requêtes SFW. En outre, la déclaration explicite
de la jointure externe permet au SGBD d’exécuter cet opérateur, par ailleurs très
coûteux, de manière efficace. Les autres formes peuvent entraîner une complexité
inutile, et donc un risque d’erreurs. On leur préférera autant que possible les expressions plus régulières proposées en 5.4.1 9 . Le lecteur apprendra avec ravissement
8. Cette remarque n’a en soi aucun intérêt, mais illustre la complexité induite par ces formes de
jointure.
9. Inélégamment qualifiées de old style par certains auteurs [Melton,1999].
Précédent

- 141/436

Suivant