Retour au sommaire du Travail Pratique Access
6.2 Opérateurs de regroupement pour ReqSériesPlusDe12
Dans cette nouvelle requête, nous voulons déterminer s'il y a
dans la base de données des séries dans lesquelles on a regroupé plus de 12
concurrents, sachant que l'on sait (c'est une contrainte d'intégrité) que ce
n'est pas autorisé.
Cette requête va nous faire progresser pour voir comment Access met en œuvre les
clauses GROUP BY et HAVING. En effet, pour lister les séries fautives, il suffit
de prendre la table Regrouper, et de voir, pour chaque Num_Série, si on trouve
plus de 12 enregistrements concernant des concurrents regroupés dans cette
série.
Sous la forme SQL, cette requête s'écrit :
SELECT Regrouper.Num_Série, Count(Regrouper.Dossard)
FROM Regrouper
GROUP BY Regrouper.Num_Série
HAVING Count(Regrouper.Dossard)>12
ORDER BY Regrouper.Num_Série;
Nous allons donc créer cette requête, que nous baptiserons
ReqSériesPlusDe12, qui s'appuiera sur la table Regrouper. Elle comportera deux
colonnes, l'une pour les différents Num_Série (triés) et l'autre où l'on
souhaite faire apparaître le nombre total de concurrents de chaque série. Donc
dans un premier temps, nous allons placer les deux champs Num_Série et Dossard.
Pour les opérations de regroupement, nous avons besoin de faire apparaître une
ligne de spécification supplémentaire dénommée Opérations et que l'on peut
ajouter via le menu Affichage\Opérations. Par défaut, cette ligne affiche
"Regroupement" pour chaque colonne (l'équivalent de la clause GROUP BY). Comme
indiqué dans la figure, on choisira dans la liste proposée l'opération intitulée
"Compte" (équivalent de COUNT) pour la colonne Dossard.
Si l'on regarde le résultat en mode Feuille de données, on trouve bien la liste
de toutes les séries avec leur nombre de concurrents. Comme on ne veut que
celles qui excèdent 12, il suffit alors de rentrer ">12" (sans guillemets) dans
la ligne Critères

On doit alors obtenir quelque chose comme la table suivante :

On remarquera tout de même dans la figure précédente que les
titres des colonnes ne sont pas Num_Série et CompteDeDossard, mais qu'elles ont
été rebaptisées Série et Total. Pour ce faire, il suffit, comme l'indique la
figure qui suit, d'éditer chaque Champ, pour insérer devant le nom du champ tel
qu'il est défini dans la table le nouveau nom suivi de ":".

On pourra constater que dans le Mode SQL, ceci se traduit par la
formulation suivante :
SELECT Regrouper.Num_Série AS Série,
Count(Regrouper.Dossard) AS Total
..
Exercice facultatif : ReqEquipesIncomplètes
Pour s'entraîner à l'utilisation de ce genre de requête, on
essaiera de déterminer quelles sont les équipes qui sont inscrites dans le
concours par équipes à des épreuves sans qu'il y ait au moins 3 concurrents de
cette équipe inscrits dans ces épreuves. On devrait obtenir quelque chose comme
la table suivante :

Retour au sommaire du Travail Pratique Access