Livre_silo 30 août 2013 16:32 Page 290
¨
©
¨
©
¨
©
¨
©
C o p y r i g h t E y r o l l e s
290
Informatique pour tous
1 Calculer la moyenne des élèves de la classe 3.
2 Obtenir les élèves scolarisés en filière MPSI.
3 Déterminer la classe ayant la meilleure moyenne.
1 On sélectionne les élèves, puis on effectue une agrégation avec la fonction moyenne :
γ moyenne(Note) (σ Classe=3 (élève))
2 Il faut effectuer une jointure pour connaître la filière de chaque élève :
π Nom,Prénom,Classe,Note (σ Filière=MPSI (élève [Classe = id] classe))
3 On décompose la requête en sous-requêtes.
Pour calculer la moyenne des différentes classes, on peut utiliser une agrégation avec la fonction
moyenne en regroupant les élèves selon leur classe :
R = Classe γ moyenne(Note) (élève)
On effectue une nouvelle agrégation (cette fois sans regroupement) pour déterminer la moyenne maximale :
R
′ = γ max(moyenne(Note)) (R)
Puis on détermine l’identifiant de la classe ayant cette moyenne :
R
′′ = σ moyenne(Note)=R ′ (R)
Il reste alors à sélectionner l’entrée correspondante dans classe, ce qu’on fait au moyen d’une jointure :
R
′′ [Classe = id] classe
On peut terminer par une projection si on ne souhaite pas conserver toutes les informations concernant
cette classe. L’opération globale est donc ici composée de beaucoup d’opérations simples.
11.3 Traduction en langage SQL
Les opérateurs complexes se traduisent également par des requêtes de recherche commençant par la commande SELECT.
11.3.1 Jointure
La jointure simple R [A = B] R
′ s’écrit :
SELECT * FROM R JOIN R' ON A=B;
Là encore, il s’agit d’une extension de la commande SELECT et on peut donc directement
la combiner avec une projection, voire une sélection.
Le produit cartésien s’exprime simplement comme une jointure sans condition ON.
Dans le cas où l’on souhaite réaliser plusieurs jointures, on pourra utiliser un produit cartésien suivi d’une condition WHERE. Ainsi, la jointure R [A = B] R
′ [C = D] R
′′ s’écrit :
SELECT * FROM R,R',R'' WHERE A=B AND C=D;
Précédent

- 303/402

Suivant