Eléments concernant les requêtes sous ACCESS
Requêtes en QBE
Access utilise le « langage » visuel QBE pour exécuter les requêtes. Cela évite de connaître et/ou de saisir celles-ci en langage SQL, mais cette possibilité est disponible sous ACCESS. En fait les requêtes que nous saisissons en mode QBE sont « transformées » en SQL par Access pour les exécuter. .Il est préférable d'utiliser le mode Création afin de bénéficier de plus de possibilités qu'avec l'assistant. Il faut auparavant avoir réglé le problème des relations entre les tables pour pouvoir travailler sur les requêtes (sous peine de se trouver en présence de produits cartésiens)
Une fois la requête en mode création demandée Access propose de sélectionner les tables nécessaires. Pour beaucoup de requêtes il est donc inutile de les sélectionner toutes pour chaque requête ; cela conduit parfois à de graves erreurs.
Les tables étant sélectionnées, choisissons les champs :
Un clic sur exécute la requête. Il est conseillé de sauvegarder les requêtes créés et de les doter d'un nom significatif.
Comment filtrer les données ? En remplissant correctement la zone Critères située au-dessous de chaque champ. Vous avez noté que la sélection du tri est possible pour chaque colonne. L'ordre des tris est simple : une colonne située à gauche prime sur celle qui est à sa droite.
L'utilisation de jokers (identiques à ceux du Dos et de Windows) est permise. Le caractère * remplace n'importe quel caractère en n'importe quel nombre, alors que ? n'en remplace qu'un, mais n'importe lequel. Ces jokers viennent enrichir les critères de sélection.
Exemples :
Etudiants dont le nom commence par la lettre d
d* ou comme "d*"
Dont le nom commence par un des lettres a, b, c, d
Comme "[a-d]*"
Dont le nom contient la lettre u
*u* ou comme "*u*"
Dont le nom contient exactement 4 lettres
Comme "????"
Tous les jours d'octobre 2005
Comme "*/10/2005"
Remarque : Bien souvent il n'est pas indispensable de saisir Comme .
Les critères peuvent se combiner pour une même colonne :
Paris ou les villes dont le nom commence par v
"paris" Ou Comme "v*"
Toutes les villes sauf Paris
Pas "paris"
Villes parmi une liste (ici Paris et Rouen)
In ('paris';'rouen')
Aucune ville de la liste
Pas In ('paris';'rouen')
Pour les champs numériques les caractères de comparaison classiques sont disponibles (>, >=, < , <=, =, complétés par d'autres :
Age supérieur à 25
>25
Age inférieur ou égal à 25
<=25
Age egal à 30
30
Age compris entre 22 et 26
entre 23 Et 28
Entre le 15/10/2005 et le 3/11/2005
Entre 15/10/2005 et à3/11/2005
Concernant les dates :
Date du jour
Date()
Date précédent aujourd'hui
<Date()
Les 15 derniers jours
<Date()-15
Entre le mois dernier et le mois suivant
Entre Date()-30 Et Date()+30
Cas des champs oui/non : Il suffit de saisir OUI ou NON sous la colonne concernée.
Vérifier la présence de valeurs pour une colonne :
Pas de valeurs
EST NULL
Que les lignes dont ce champ n'est pas vide
EST PAS NULL
Requête paramétrable : Celle-ci invite l'utilisateur à saisir ce qu'il désire voir.
Nom d'un étudiant
[saisir un nom]
Partie du nom d'un étudiant
Comme "*" & [saisir un nom] & "*"
L'exécution dans le premier cas va faire apparaître une boîte de dialogue permettant la saisie du nom exact . Dans le second cas un partie du nom suffit.
Requêtes combinées
Etudiants dont l'âge est inférieur à l'âge moyen.
< (SELECT avg(age) from etudiant);
Eléments relatifs aux calculs :
Champ calculés : On le sait, ceux-ci ne sont pas saisis ni sauvegardés. En revanche le mode de calcul l'est. Principe :
Frais= age de l'étudiant * 50 €
Frais :[age]*50
Requêtes contenant des calculs : un clic sur l'icône Sigma permet d'ajouter une ligne Opérations .
Beaucoup de ces fonctions de calcul concernent les champs numériques, mais certaines s'appliquent aussi à d'autres types de champs. Ll'aide d'Access détaille les fonctions disponibles.
Quelques exemples : Nombre d'étudiants par communes :
Age moyen des étudiants par cycle, tri décroissant :
Les requêtes en langage SQL.
Ecrire directement ses requêtes en SQL est possible avec ACCESS. Pour cela dans l'onglet Requête créer une nouvelle requête en mode création (sans l'assistant donc). On ferme de suite sans sélectionner de table , puis on passe en mode SQ comme indiqué ci-contre : On arrive à une zone de saisie des requêtes en mode SQL : Le modèle relationnel (très simple) utilisé ici sera le suivant, sachant qu'on se restreint aux requêtes de type SELECT :
Etudiant ( num_etudiant , nom, prenom, civilite, age, #cycle )
formation ( cycle , intitule)
Extraction de données : SELECT nom_des_champs FROM nom_de_table
Tous les champs de la table ETUDIANT
SELECT * FROM etudiant ;
Prénoms, et noms des étudiants
SELECT prenom, nom FROM etudiant ;
Tri des données extraites: ORDER BY nom_de_champ ASC, DESC
Nom et âge (tri croissant) des étudiants
SELECT nom, age FROM etudiant ORDER BY age ;
Prénoms et cycles, (tri décroissant)
SELECT prenom, cycle FROM etudiant ORDER BY cycle DESC ;
Sélection ( WHERE ) les jokers évoqués ci-dessus restent valables, ainsi que les opérateurs de comparaisons pour les champs numériques :.
Etudiants dont le nom commence par la lettre d
SELECT * FROM etudiant WHERE nom LIKE 'd*' ;
Dont le nom commence par un des lettres a, b, c, d
SELECT * FROM etudiant WHERE nom LIKE "[a-d]*"
Dont le nom contient la lettre u
SELECT * FROM etudiant WHERE nom LIKE '*u*'
Dont le nom contient exactement 4 lettres
SELECT nom from etudiant WHERE nom LIKE '????';
Etudiant dont l'âge est compris entre 22 et 25 ans
SELECT * FROM etudiant WHERE age BETWEEN 22 AND 25
Etudiants dont l'âge n'est pas supérieur à 25 ans
SELECT * from etudiant where NOT(age>25);
Jointures:
Nom et intitulé de la formation suivie
SELECT nom, intitule FROM etudiant, formation WHERE etudiant.cycle=formation.cycle;
SELECT Etudiant.nom, formation.intitule FROM formation INNER JOIN Etudiant ON formation.cycle = Etudiant.cycle;
Calculs et regroupements
Nombre d'étudiants
SELECT COUNT(*) FROM etudiant
Age moyen par formation
SELECT intitule, Avg(age) AS AgeMoyen FROM formation, etudiant
WHERE (etudiant.cycle=formation.cycle) GROUP BY intituled
Champs calculés: age exprimé en mois
SELECT age*12 AS Frais from etudiant
AS est un alias qui permet de designer clairement le nouvel objet créé par la requête.
Requêtes combinées (SELECT dans SELECT)