Temps
nécessaire pour suivre cette leçon : Une grosse demie heure
Pour suivre cette leçon, vous devez avoir suivi les leçons précédentes. Ou plus précisément, vous devez être en possession de la base de données ProFormation.mdb telle qu'elle était à la fin de la leçon précédente. Si vous n'êtes pas certain de l'avoir, vous pouvez la télécharger ici
Dans cette leçon, nous allons voir comment faire pour trier plusieurs colonnes en même temps, ainsi que la manière d'extraire seulement les valeurs extrêmes d'une plages de valeurs, comme la liste des 5 personnes les plus agées, ou les 3 personnes les plus riches |
Créez une nouvelle requête, comme d'habitude, et placez les champs
suivants dans cet ordre : .
Si vous lancez requête telle quelle, vous aurez la liste simple de tous
les gens, dans l'ordre dans lequel elles ont été rentrées.
Vous pouvez bien entendu toujours trier par n'importe quelle colonne avec le
bouton droit de votre souris, et en choisissant Tri Croissant, mais ce tri ne
sera pas mémorisé.
Nous allons voir dans cette leçon qu'il possible de mémoriser les tris avec la requête.
Revenez ou restez en mode création de cette requête. Cliquez dans
la zone Tri de Domaine : .
En cliquant dans cette zone, ça fait apparaître une petite flèche.
Si vous cliquez sur cette petite flèche, vous pouvez choisisr entre
Choisissez Tri croissant pour
le domaine : . Lancez
la requête :
Vous constatez que tout le monde est là, et que les domaines sont triés
par ordre alphabétique : D'abord ceux qui n'ont pas de domaine, ensuite
ceux qui ont le domaine ??, puis ???, puis Affaire, Chanson, etc...
Une fois de plus, nous constatons quelques erreurs de saisie : Pourquoi atrribuer ?? ou ??? à des gens dont le domaine est inconnu... Autant le laisser en blanc ! Ne changez rien : Laissons volontairement ces "erreurs de saisie" (Nous verrons à la leçon 45 comment bien nettoyer toutes ces erreurs)
Astuce : Plutôt que de
cliquer sur la petite flèche
pour choisir Croissant, vous pouvez double-cliquer directement dans la zone
de tri :
. Croissant
apparait automatiquement. Si vous recliquez encore deux fois sur Croissant,
il se transforme en Décroissant, et encore deux clics, le tri disparait.
Exactement.
Justement, non ! Nous allons pouvoir trier par plusieurs colonnes en même temps.
Démonstration : Demandez le tri alphabétique EGALEMENT sur PaysOrigine
: .Lancez la requête,
et regardez bien ce qui se passe : à première vue, rien n'a changé,
la table est toujours triée par ordre alphabétique du Domaine.
Mais regardons de plus près une partie des enregistrements : Les personnes
qui font de la chanson :
Les pays sont triés alphabétiquement pour chaque domaine : D'abord ceux qui n'ont pas de pays (Jennifer Lopez), ensuite : Belgique, Canada, Etats-Unis, France, Pays-Bas et Royaume-Uni.
Oui. Et nous allons continuer : Prenons les "Chanson" de France :
. Ils ne sont pas
du tout dans l'ordre de leur état civil : Célibataire, Rien, Célibataire,
Marié(e), Divorcé(e), Marié(e), Marié(e), ... C'est
n'importe quoi !
C'est ça ! Tiens, on va même faire une petite variante puisque
vous avez bien compris : Ne choisissez pas Croissant, mais Décroissant
: . Lancez la requête,
et regardez principalement ce qui se passe au niveau des "Chanson",
"France" :
Les états civils sont triés en ordre alphabétique inverse
: Marié(e), Divorcé(e), Célibataire, et Rien.
Pas du prénom. Vous demandez juste l'ordre alphabétique du nom, autrement il va d'abord définir le prénom par ordre alphabétique, et ensuite les noms, ce qui est idiot.
Faites donc : ,
et lancez la requête. Regardez principalement la section des Chanson
- France - Marié(e) :
.
Ils sont triés par ordre alphabétique du nom de famille : Brassens,
Cabrel, Gainsbourg, Goya et Hallyday.
Enregistrez cette requête sous R_CelebriteMultiCleDeTri, avec la description Tri par Domaine, Pays, EtatCivil et NomClient
Toujours, sans exception
Oui. Faites le test : Restez dans cette requête, et déplacez le
Pays de manière à ce que ce soit la première colonne (Revoyez
la leçon 21 si vous avez oublié
comment on déplace un champ). Une fois que vous avez cette disposition
: , lancez votre
requête.
Faites Fichiers/Enregistrer SOUS : R_CelebriteMultiCleDeTri2 avec la description "Tri par Pays, Domaine, EtatCivil et NomClient"
Oui. Nous ne l'avons pas fait, parce que dans notre cas ç'aurait été un peu idiot, nous n'avons absolument pas assez de données pour que ce soit représentatif (A part Hallyday qui est représenté 2 fois (Johnny et David), il n'y a pas vraiment d'autres exemples dans notre table).
Nous allons maintenant nous pencher sur une intéressante fonction des
requêtes, plus ou moins liée aus tris : C'est la fonction "Première
valeurs". Créez une nouvelle requête, comme d'habitude,
avec les champs Nom, Prénom et SalaireMensuel. Demandez le tri décroissant
par salaireMensuel seulement : .
Ce qui aura pour effet de donner la liste de tous les gens, les plus riches
en premier lieu.
Admettons maintenant que vous désiriez afficher seulement les 5 personnes
les plus riches de votre table : Cliquez sur cette petite déroulante,
dans la barre d'outils, au dessus de votre écran, sous les menus : ,
et choisissez 5 :
.
Lancez la requête :
.
Vous obtenez effectivement les 5 premières personnes les plus riches.
Enregistrez cette requête sous R_Celebrite5LesPlusRiche (Ne quittez pas cette requête)
Bien sûr, oui.
Oui. Essayez : Ecrivez 1 dans cette liste
et lancez la requête.
Faites Fichier/Enregistrer Sous : R_CelebriteLaPlusRiche
Mais ils gagnent tous les deux 30'000 francs ! S'il n'en avait choisi qu'un çaurait été qui ? Stallone ou Sirven ?
Oui. Parce qu'Access ne veut pas vous renvoyer au hasard l'un des deux.
PAR CONTRE... Si vous aviez : ,
alors, çaurait été différent : En effet, commne
vous avez 2 clés de tris : Le salaire ET le Nom, dans ce cas, il n'y
a plus d'ambiguïté : La requête trie donc d'abord par salaire,
et, A SALAIRE EQUIVALENT, il trie par ordre alphabétique des noms...
Ce qui fait que comme dans notre table, nous avons 2 personnes qui gagnent le
même salaire : Stallone et Sirven, Access va les renvoyer par ordre alphabétique
: D'abord Sirven, ensuite STallone. Et, dans ce cas, si vous demandez le
résultat
de la requête, il ne va plus renvoyer les deux personnes, mais effectivement
SEULEMENT la première alphabétiquement : alfred Sirven :
!
Faites Fichier/Enregistrer Sous : R_CelebriteLaPlusRicheAlphabetique.
Fermez cette requête, et mettez les descriptions suivantes dans ces 3
nouvelles requêtes :
C'est le même principe. Admettons que vous aimeriez voir les 10% des
personnes les plus agées de votre liste, créez une nouvelle requête
comme d'habitude, et demandez : ,
et écrivez 10% dans la zone des premières valeurs :
.
Lancez la requête.
Tout est normal : 14 personnes, c'est justement parce qu'il y a 14 personnes dont la date est inconnue, et comme c'est trié par ordre croissant de date de naissance, les dates vides sont placées en premier. En fait, il faudrait exclure les dates vides. Vous vous rappelez comment faire ?
Exactement. Essayez ! .
Cette fois, ça marche nettement mieux !
Enregistrez cette requête sous R_Celebrite10PourCentLesPlusAgee. Donnez lui la desccription : DateNaissance : Ordre décroissant, Premières valeurs : 10%
Attention : Vous avez demandé la liste de toutes les personnes dont la date de naissance n'était pas nulle ! Il n'y a donc plus 100 personnes, mais 100 - 14 personnes sans dates = 86 personnes (on a vu un peu plus haut dans la leçon qu'il y avait 14 personnes sans date de naissance). 10% de 86 personnes, c'est 8.6 personnes. Comme il n'est pas possible évidemment d'afficher 8.6 personnes, Access en affiche 9.
Exactement.
Les requêtes servent à extraire une
partie des données d'une table, mais également à trier.
Il est possible de trier sur un, deux ou plus de champs... Les tris s'effectuent
toujours de gauche à droite : C'est d'abord la colonne la plus à
gauche qui est triée, ensuite, vers la droite. Si la première
colonne est Pays, et la deuxième est NomClient, Access va trier tous
les pays par ordre alphabétique, et pour tous les habitants d'un
même pays, ils seront alors triés par ordre alphabétique
du nom. Le tri est étroitement lié avec la notion de Premières Valeurs. Il est possible d'extraire les 12 personnes les plus jeunes, ou les 27% des gens dont le salaire est le plus élevé, en utilisant la liste déroulante "Premièeres valeurs". En cas d'égalité, Access affiche les 2 ou plusieurs enregistrements comme s'il n'en s'agissait que d'un seul. |
Pour voir les solutions, il vous suffit de sélectionner le questionnaire ci-dessus : 3 petites étoiles *** apparaîtront en face des bonnes réponses. |
Encore une fois, il ne s'agit pas de créer une nouvelle base de données, mais vous allez devoir créer quelques requêtes dans votre base de données ProFormation. Toutes les requêtes seront basées sur T_Celebrite, et devront contenir au minimum le Prénom et le NomClient.
Téléchargez la solution de l'exercice ici, qui n'est autre que ProFormation telle qu'elle devrait être à la fin de cette leçon |
Si vous n'êtes pas tout à fait certain d'avoir suivi correctement toutes les étapes de cette leçon, vous avez la possibilité de télécharger ici la version de ProFormation.mdb exactement dans l'état ou elle devrait être à la fin de cette leçon.
Avez-vous une question technique
concernant cette leçon ? Cliquez
ici !
Une remarque sur cette leçon ? Un problème
? Une erreur ? une ambiguité ? Soyez
gentil de m'en informer