5.5 Extraction de données groupées
107
© Dunod – La photocopie non autorisée est un délit.
b) Identifiant d’une jointure
Ce que nous venons de discuter conduit à une première règle. L’identifiant du
résultat de la jointure :
select *
from
TA, TB
where TA.IA = TB.RA
est constitué des colonnes de l’identifiant primaire de TB (soit IB). Si certaines
colonnes de l’identifiant primaire de TB ne sont pas reprises dans la clause select
(et qu’aucun autre identifiant de TB n’est repris), le résultat n’a en principe 33 pas
d’identifiant, comme on peut l’observer dans la requête suivante, dérivée de celle de
la section précédente :
select LOCALITE,LIBELLE
from
CLIENT CLI,COMMANDE COM,DETAIL D,PRODUIT P
where CLI.NCLI = COM.NCLI
and
COM.NCOM = D.NCOM
and
D.NPRO = P.NPRO
Cette requête représente les détails de commande, mais pour chacun d’eux on ne
retient que la localité du client de la commande, ainsi que le libellé de son produit,
ce couple de valeurs n’étant évidemment pas identifiant.
L’ajout du modifieur distinct dans la clause select permet de reconstituer un
identifiant. Cependant, le résultat serait tout autre : chaque ligne de ce
résultat représenterait alors le fait que dans la localité v, on a commandé au moins
une fois un produit de libellé l.
5.5 EXTRACTION DE DONNÉES GROUPÉES
Les requêtes examinées dans les sections précédentes 34 produisent des lignes qui
sont généralement en correspondance une pour une avec les lignes d’une table de la
clause from. Nous allons examiner comment il est possible d’extraire d’une table,
ou d’une jointure, des informations sur des concepts latents dans ces tables.
5.5.1 Notion de groupe de lignes
Considérons la table CLIENT. Il est permis d’y percevoir, virtuellement du moins,
des groupes de clients selon leur localité, ou selon leur catégorie, ou encore selon
leur nom 35 . La requête suivante donne, pour chaque groupe de clients classés ou
33. La règle complète est un peu plus complexe. En particulier, si la clé étrangère, même si elle
n’est pas (entièrement) reprise dans la clause select, forme un identifiant de TB, et si la clause
select reprend un identifiant de TA, alors cet identifiant est aussi celui du résultat de la jointure.
34. Sauf cas particuliers tels que l’usage de fonctions agrégatives ou du modifieur distinct.
Précédent

- 107/436

Suivant