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 :
 

 

Suite

Retour au sommaire du Travail Pratique Access