la requête de sélection
![](http://cloud.wetud.com/file/hQqmVGDdc8T/page/1.png)
Chapitre 12 la requte de slection 1 - Introduction Stocker sans cesse des informations dans une base de donnes et en assurer la maintenance nest pas une fin en soi Il faut pouvoir retrouver chaque fois que cela est ncessaire les informations pertinentes dont on a besoin La requte de slection a t cre dans ce but Elle joue dans les BDD un rle trs important Comme pour le reste de ce tutoriel encore appel quotcours en lignequot ou tutorial nous utiliserons le SGBD Access comme support pratique 2 - La requte de slection Dans le cas le plus simple la requte slection sapplique une seule table dont elle conserve toutes les colonnes Contrairement la slection simple ou projection qui permet dextraire dune table certaines colonnes nommment dsignes la slection permet dextraire dune table les lignes rpondant certains critres comme le montre la figure ci-dessous Lensemble des critres dune requte de slection est parfois appel filtre par analogie avec le filtre manuel et lexpression filtrer une table laide dune requte est assez courante U V W X Y Z T 1 2 3 4 5 6 U V W X Y Z T 2 4 5 La slection reprsente loutil courant de recherche de linformation dans les bases de donnes Dune manire gnrale la slection sapplique soit une seule table soit plusieurs tables lies par des relations permet de slectionner les lignes par application dun ou plusieurs critres portant sur un ou plusieurs champs permet de choisir les colonnes que lon veut conserver comme la slection simple peut enregistrer son rsultat sous forme dune table peut crer une nouvelle colonne peut tre paramtre Tout ce que nous avons expos au chapitre 11 sur la slection simple sapplique a fortiori la slection en gnral choix des colonnes requte multi table cration de table cration de champ tri requtes embotes
![](http://cloud.wetud.com/file/hQqmVGDdc8T/page/2.png)
La formulation dune requte de slection met en jeu des critres lis par des oprateurs logiques Sa ralisation pratique pose des problmes de syntaxe qui sont propres au SGBD utilis A titre dexemple recherchons les clients du reprsentant Dupont ou de son collgue Durand qui ont pass une commande de plus de 1000 le mois dernier Dans une des tables de notre BDD se trouve une colonne quotReprsentantquot et il faut que nous exprimions le fait que nous recherchons les enregistrements qui possdent le nom Durand ce qui soulve un problme de syntaxe le nom quotDurandquot doit tre mis entre guillemets Ensuite il faut que nous exprimions le fait que cest quotDurandquot OU quotDupontquot ce qui met en jeu loprateur logique OU Dans une table nomme quotCommandesquot existe un champ quotCot totalquot et il faut que nous exprimions le fait que ce cot est suprieur 1000 ce qui met en jeu loprateur de comparaison quotsuprieur quot 3 - La syntaxe La syntaxe varie avec le type de donnes du champ sur lequel porte le critre une donne de type texte doit tre crite entre guillemets quotquot et prcde de loprateur quotCommequot Cet oprateur peut tre omis si aucun oprateur de comparaison nest prsent les nombres sont crits tels quels la date et ou lheure doivent tre places entre dises exemple 01012003 Dans certains SGBD le dise est remplac par lapostrophe un boolen doit tre dclar vrai ou faux La valeur Null case vide pas de donnes possde une syntaxe particulire Pour dtecter les enregistrements dont un champ particulier est vide il faut crire Est Null Dans le cas contraire il faut crire Est Pas Null La casse na pas dimportance le SGBD corrigeant de lui-mme 4 - Les caractres gnriques Pour exprimer le fait que nous recherchons les enregistrements qui possdent la chane de caractres quottrucquot dans un champ donn nous crivons conformment aux indications du paragraphe prcdent Comme quottrucquot Lapplication dun critre un champ de type texte recle un pige particulier Quand nous exprimons ce critre comme ci-dessus nous ne slectionnons que les enregistrements possdant exactement la chane quottrucquot dans le champ considr Si le champ contient quottrucagequot ou quotle
![](http://cloud.wetud.com/file/hQqmVGDdc8T/page/3.png)
trucquot lenregistrement correspondant est ignor Il nous faut donc pouvoir prciser comment la chane recherche se prsente dans le champ occupe-t-elle tout le champ est-elle prcde ou suivie dautres caractres et ventuellement quel est leur nombre Pour ce faire nous utilisons des caractres gnriques cest dire des caractres qui peuvent remplacer un ou plusieurs autres caractres quels quils soient Le caractre gnrique le plus frquemment utilis est lastrisque qui remplace un nombre quelconque de caractres Ainsi Comme quottrucquot permet de slectionner tout enregistrement dont le champ considr contient une chane de caractres se terminant par quottrucquot telle que quottrucquot et quotle trucquot par exemple Par contre quottrucagequot sera ignor De mme Comme quottrucquot permet de slectionner tout enregistrement dont le champ considr contient une chane de caractres commenant par quottrucquot telle que quottrucquot et quottrucagequot Par contre quotle trucquot sera ignor Enfin Comme quottrucquot permet de slectionner tout enregistrement dont le champ considr contient la chane quottrucquot tel que quottrucquot quottrucagequot et quotle trucquot Lastrisque peut tre place nimporte o et non pas seulement en dbut ou en fin de chane Ainsi une requte exprime ainsi Comme quottutorielhtmquot retrouvera dans le journal du serveur du CERIG toutes les pages HTML ddies au prsent tutoriel Il nest pas ncessaire de placer une astrisque en dbut de chane parce que dans le fichier journal le serveur web ne reproduit pas le dbut de ladresse httpcerigefpginpgfr Le second caractre gnrique par frquence dusage est le point dinterrogation qui remplace un caractre quelconque et un seul Ainsi le critre Comme quotcdquot retrouvera par exemple cad ced cid cod mais pas cd car le point dinterrogation implique la prsence dun caractre Si lon veut rechercher lastrisque ou le point dinterrogation dans un champ il faut placer ces caractres entre crochets Par exemple la recherche du point dinterrogation plac nimporte o dans un champ scrit Comme quotquot Attention Les caractres gnriques et ne sappliquent qu linterrogation des champs de type texte Dans un champ de type DateHeure une expression telle que 2002 est considre comme invalide par le SGBD Access Notons de plus que dans les versions rcentes de la plupart des SGBD lastrisque est remplace par le
![](http://cloud.wetud.com/file/hQqmVGDdc8T/page/4.png)
pourcent et le point dinterrogation par le caractre de soulignement Une annexe traitera de lusage des caractres gnriques plus en dtail 5 - Les oprateurs logiques Une requte un peu labore fait appel plusieurs critres sappliquant soit un mme champ soit des champs distincts Ces critres sont lis par des oprateurs logiques dont les plus utiliss sont ET OU et PAS Lutilisation de parenthses permet de dfinir lordre dans lequel sappliquent les oprateurs Les personnes familiarises avec la recherche documentaire connaissent bien cette faon de procder qui provient directement de la thorie des ensembles Dans Access les oprateurs logiques Et et OU peuvent tre crits explicitement ou tre reprsents graphiquement dans la grille de linterface graphique de cration dune requte Loprateur PAS doit tre crit explicitement Pour rechercher dans le champ quotNomquot dune table intitule quotPersonnesquot les individus sappelant Truc ou Machin nous avons le choix entre les deux solutions que nous avons reprsentes ci-dessous en dtourant une partie de la grille de dfinition de la requte Nous voyons que loprateur OU peut tre crit explicitement droite ou traduit graphiquement gauche Le rsultat de la requte est bien entendu le mme dans les deux cas Loprateur logique peut porter sur deux champs distincts La traduction graphique de loprateur OU est alors plus simple que son criture explicite comme le montrent les figures ci-dessous On notera que le OU sobtient en se dcalant dune ligne sinon cest loprateur ET qui fonctionne
![](http://cloud.wetud.com/file/hQqmVGDdc8T/page/5.png)
Loprateur ET peut lui aussi tre traduit graphiquement ou crit explicitement comme le montrent les figures ci-dessous La requte recherche les noms commenant par la lettre quotmquot et finissant par la lettre quotnquot et retrouve par exemple quotMachinquot Notons que la requte aurait pu tre formule plus simplement Comme quotmnquot Loprateur logique peut impliquer deux champs distincts comme le montre lexemple ci-dessous La requte recherche les enregistrements relatifs une personne nomme Pierre Machin Conclusion dans la grille de cration dune requte le dplacement horizontal correspond loprateur ET et le dplacement vertical correspond loprateur OU Loprateur PAS est sans reprsentation graphique Dans une requte complexe lapplication des oprateurs seffectue ligne par ligne comme le montre lexemple ci-dessous
![](http://cloud.wetud.com/file/hQqmVGDdc8T/page/6.png)
La requte fonctionne selon lexpression ensembliste suivante PersonnesNom Comme quotmachinquot ET PersonnesPrnom Comme quotpierrequot OU PersonnesPrnom Comme quotjacquesquot ET PersonnesDate naissance8301975 cest dire que lexpression qui se trouve sur la ligne quotCritres quot est value elle ralise un ET lexpression qui se trouve sur la ligne quotOu quot est value elle ralise aussi un ET un OU est ensuite effectu entre les rsultats des deux expressions prcdentes 6 - Les oprateurs de comparaison Les oprateurs de comparaison arithmtiques gal lt infrieur lt infrieur ou gal gt suprieur gt suprieur ou gal ltgt diffrent sappliquent aux donnes numriques et montaires mais aussi aux dates et aux chanes de caractres Pour ces dernires on notera que le signe gal est quivalent loprateur quotCommequot le signe diffrent est quivalent loprateur quotPas Commequot Pour prciser un intervalle on peut utiliser lexpression Entre Et qui fonctionne avec les types de donnes texte dateheure et numriquemontaire 7 - Les fonctions Pour exprimer des critres on peut utiliser des fonctions mais ces dernires sont spcifiques la fois du SGBD et du type de donnes du champ considr Nous consacrerons une annexe aux fonctions et nous nous contenterons ici de citer quelques exemples dont nous avons vrifi quils fonctionnaient effectivement Pour les champs en mode texte
![](http://cloud.wetud.com/file/hQqmVGDdc8T/page/7.png)
NbCarNomquot4quot retrouve les noms de 4 caractres DroiteNom2quotsequot retrouve les noms se terminant par quotsequot GaucheNom2quotduquot retrouve les noms commenant par quotduquot ExtracChaneNom23quotachquot retrouve le nom quotMachinquot lequel contient la chane de 3 caractres quotachquot en commenant au deuxime caractre Pour les dates et les heures PartDatequotaaaaquotDatecommande2000 retrouve les commandes de lanne 2000 Cette fonction opre aussi avec quotjquot pour le jour quotmquot pour le mois et quottquot pour le trimestre DiffDatequotjquotDatecommandeDatelivraisongt100 retrouve les produits qui ont t livrs plus de 100 jours aprs avoir t commands Cette fonction opre aussi avec quotmquot pour le mois et avec quotaaaaquot pour lanne JourDatecommande12 retrouve les commandes effectues le 12 des mois prsents dans la table MoisDatecommande6 retrouve les commandes du mois de juin AnneDatecommande2000 retrouve les commandes de lanne 2000 AjDatequotjquot-10Datelivraison fournit une date antrieure de 10 jours la date de livraison Attention La francisation des fonctions dateheure issues de VBA na pas toujours t effectue par lditeur avec tout le srieux ncessaire et lutilisateur ne doit pas tre surpris sil se heurte des disfonctionnements Ainsi la fonction JourSemdate qui donne le numro du jour dune date donne marche lamricaine le jour numro 1 est le dimanche et non le lundi comme cest le cas en Europe Par contre la fonction WeekdayNamen du jour qui donne le nom du jour connaissant son numro fonctionne leuropenne le jour n 1 est bien le lundi Il en rsulte que lexpression obtenue en embotant les deux fonctions prcdentes WeekdayNameJourSemdate donne un rsultat faux le lundi la place du dimanche etc De mme les fonctions qui dans leurs arguments acceptent le jour quotjquot le mois quotmquot le trimestre quottquot et lanne quotaaaaquot nacceptent pas la semaine contrairement ce qui se passe dans la version anglophone dAccess Pour les champs de type numrique ou montaire on trouve les fonctions arithmtiques habituelles somme diffrence produit quotient des fonctions mathmatiques et statistiques
![](http://cloud.wetud.com/file/hQqmVGDdc8T/page/8.png)
des fonctions telles que Abs valeur absolue Arrond partie entire Ent partie entire arrondie infrieurement pour les nombres ngatifs Alat nombre alatoire compris entre 0 et 1 et Sgn signe dun nombre A la valeur particulire Null correspond la fonction EstNullNom dun champ Elle retourne la valeur -1 si le champ est vide et 0 zro dans le cas contraire Attention Notez bien que lorsquune fonction possde plusieurs arguments le caractre sparateur est le point-virgule alors que cest la virgule dans la version anglophone dAccess Cest un dtail de syntaxe ridicule mais il est lorigine de bien des mauvaises surprises 8 - La requte de slection paramtre Soit une table contenant diverses informations dont une date comme le montre lexemple ci-dessous Imaginons que nous ayons rgulirement besoin des informations relatives un jour donn Nous pouvons bien sr crer chaque fois une requte nouvelle mais il est plus commode dcrire une seule fois la requte et de paramtrer la valeur de la date Dans la grille de cration de la requte la valeur du paramtre date est remplace par un message crit entre crochets
![](http://cloud.wetud.com/file/hQqmVGDdc8T/page/9.png)
Si nous lanons la requte la boite de dialogue suivante saffiche Nous saisissons la date dans le format utilis par la table jjmmaaaa et nous validons Le SGBD affiche les lignes relatives la date indique 9 - Conclusion Les SGBD mettent la disposition des utilisateurs des outils extrmement varis pour exprimer les critres utiliss dans llaboration dune requte En embotant si ncessaire plusieurs requtes les utilisateurs peuvent extraire des BDD toutes les informations quils dsirent -- ou presque Il est fort rare que lon se trouve dans limpossibilit relle de transcrire un critre donn
![](http://cloud.wetud.com/file/hQqmVGDdc8T/page/10.png)
Pour qui fait leffort dapprendre crer des requtes et obtient de son entreprise lautorisation de sen servir il y a l une mine dor au sens de linformation tout au moins
Tarik Hcine
la requête de sélection Access
أرسلت .
- الملفات : الملفات.
- المستوى : تقني متخصص.
- الشعبة : Techniques de Développement Informatique.
- الوحدة : Production de documents.
كلمات مفتاحية :
requête sélection
requête sélection