5.4 Extraction de données de plusieurs tables (jointure)
95
© Dunod – La photocopie non autorisée est un délit.
select LOCALITE from CLIENT where CAT = 'C1'
union
select LOCALITE from CLIENT where COMPTE < 0
Si on désire empêcher l’élimination des lignes en double, on utilisera l’opérateur
union all. Une même ligne qui apparaît m fois dans le premier membre et n fois
dans le second apparaîtra m+n fois dans le résultat, comme le montre la requête cidessous.
select LOCALITE from CLIENT where CAT = 'C1'
union all
select LOCALITE from CLIENT where COMPTE < 0
D’autres opérateurs ensemblistes comme l’intersection (intersect), qui construit
l’ensemble des éléments simultanément présents dans les deux collections, et la
différence (except), qui construit l’ensemble des éléments appartenant à la
première collection mais pas à la seconde, sont également disponibles.
Munis de la clause all, ces opérateurs préservent les lignes en double selon un
principe similaire à union all. Pour une même ligne respectivement en m et n
exemplaires,
• intersect all produira min(m,n) exemplaires de cette ligne,
• except all produira max(m-n,0) exemplaires de cette ligne.
d) Produit relationnel : une application pratique
Nous avons vu que le produit relationnel nous permettait de comprendre le
mécanisme de la jointure, mais qu’il n’offrait pas grand intérêt en soi. Citons cependant une application intéressante de cet opérateur. Considérons d’abord tous les
couples (LOCALITE, NPRO) possibles issus de la base de données :
LOCALITE
Namur
Poitiers
Toulouse
LOCALITE
Poitiers
Namur
Poitiers
Namur
Namur
Namur
Toulouse
Toulouse
Namur
Toulouse
Namur
95
© Dunod – La photocopie non autorisée est un délit.
select LOCALITE from CLIENT where CAT = 'C1'
union
select LOCALITE from CLIENT where COMPTE < 0
Si on désire empêcher l’élimination des lignes en double, on utilisera l’opérateur
union all. Une même ligne qui apparaît m fois dans le premier membre et n fois
dans le second apparaîtra m+n fois dans le résultat, comme le montre la requête cidessous.
select LOCALITE from CLIENT where CAT = 'C1'
union all
select LOCALITE from CLIENT where COMPTE < 0
D’autres opérateurs ensemblistes comme l’intersection (intersect), qui construit
l’ensemble des éléments simultanément présents dans les deux collections, et la
différence (except), qui construit l’ensemble des éléments appartenant à la
première collection mais pas à la seconde, sont également disponibles.
Munis de la clause all, ces opérateurs préservent les lignes en double selon un
principe similaire à union all. Pour une même ligne respectivement en m et n
exemplaires,
• intersect all produira min(m,n) exemplaires de cette ligne,
• except all produira max(m-n,0) exemplaires de cette ligne.
d) Produit relationnel : une application pratique
Nous avons vu que le produit relationnel nous permettait de comprendre le
mécanisme de la jointure, mais qu’il n’offrait pas grand intérêt en soi. Citons cependant une application intéressante de cet opérateur. Considérons d’abord tous les
couples (LOCALITE, NPRO) possibles issus de la base de données :
LOCALITE
Namur
Poitiers
Toulouse
LOCALITE
Poitiers
Namur
Poitiers
Namur
Namur
Namur
Toulouse
Toulouse
Namur
Toulouse
Namur
