Sommaire
- Tri croissant/décroissant sur une seule colonne
- Tri croissant sur plusieurs colonnes
- Tri décroissant
- Premières valeurs
- Premières valeurs : Doublons possibles
- Premières valeurs : Utilisation d'un pourcentage
Nous allons voir dans cette leçon qu'il possible de mémoriser les tris avec la requête.
Tri croissant/décroissant sur une seule colonne
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 
- Croissant (Tri alphabétique de A à Z, ou s'il s'agit d'un champ numérique, du plus petit au plus grand. En cas de dates de la plus ancienne à la plus récente)
- Décroissant (Tri alphabétique de Z à A, ou s'il s'agit d'un champ numérique du plus grand au plus petit. En cas de dates, de la plus récente à la plus ancienne)
- (Non trié) (Dans ce cas, autant ne rien mettre... C'est pareil !)
. 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.Cette première colonne est bien triée, mais pas les autres...
Exactement.C'est normal : Je comprend bien que si on trie par le pays d'origine, forcément, le domaine ne sera plus trié. On ne peut trier qu'une colonne à la fois !
Tri croissant sur plusieurs colonnes
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 :
Et à chaque changement de domaine, le tri recommence de A à Z sur le pays !
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 !
Compris ! Il suffit de définir le tri croissant dans l'EtatCivil
!
Tri décroissant
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.Et maintenant, si je veux que tous les "Chanson", "France", "Marié(e)" soient triés par ordre alphabétique par le nom, je demande un tri croissant du prénom et du nom ?
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
C'est toujours un tri de gauche à droite ?
Toujours, sans exceptionDonc, si j'intervertis les 2 premières colonnes, que je place le pays en premier lieu tout à gauche, et juste à sa droite le domaine, il va trier d'abord les pays, et pour un même pays, il va trier les domaines ?
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 :Faites Fichiers/Enregistrer SOUS : R_CelebriteMultiCleDeTri2 avec la description "Tri par Pays, Domaine, EtatCivil et NomClient"
On aurait pu encore affiner notre tri, si on avait mis le nom avant le prénom, on aurait pu trier par vraiment toutes les colonnes :
, comme ça, si par exemple, on avait eu plusieurs fois le même nom de famille, la requête les aurait trié par ordre alphabétique des prénoms (Dupont André, Dupont Charles, Dupont Ernest, ...)
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).Premières valeurs
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 :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 :
. 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)
Je suppose qu'on est pas obligé de choisir ce qui existe dans la liste (5, 25, 100), on peut écrire un autre chiffre ?
Bien sûr, oui.Donc, si je met 1, j'ai juste la personne la plus riche ?
Premières valeurs : Doublons possibles
Oui. Essayez : Ecrivez 1 dans cette listeFaites Fichier/Enregistrer Sous : R_CelebriteLaPlusRiche
Ca ne marche pas : Il me renvoie 2 personnes :
!
Mais ils gagnent tous les deux 30'000 francs ! S'il n'en avait choisi qu'un çaurait été qui ? Stallone ou Sirven ?C'est juste ! Dans ce cas, qu'on demande 1 ou 2, le résultat est le même ?
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
!Faites Fichier/Enregistrer Sous : R_CelebriteLaPlusRicheAlphabetique. Fermez cette requête, et mettez les descriptions suivantes dans ces 3 nouvelles requêtes :

Premières valeurs : Utilisation d'un pourcentage
J'ai vu que dans la liste déroulante des premières valeurs, on pouvait également indiqur un pourcentage ?
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 :Ca ne marche pas : Déjà, il devrait y avoir 10 personnes (10% de 100 personnes), là, il y en a 14... Et en plus, personne n'a de date de naissance !
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 ?Bien sûr ! je me rappelle de la leçon 25 : Il faut mettre Pas Null comme critère de DateNaissance !
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%
C'est marrant : Il ne donne que 9 personnes... Comme nous avons 100 personnes, il devrait en donner au moins 10, non ?
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.Bon finalement, ces premières valeurs ne sont absolument pas utiles s'il n'y a pas de tri sur au moins une colonne !
Exactement.
Bon... Hem... On peut résumer ?
| 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. |
Avez-vous bien compris ?
|
Exercice
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.
|

0 commentaires:
Enregistrer un commentaire