Développement d'applications
avec une base de données
Les requêtes avec Access
Module précédent
Définition
Requête = sélection de certains enregistrements en fonction de critères de recherche.
Les types de requêtes
On peut faire différentes formes de requêtes:
- Simple
- Pour trouver des doublons, i.e. des enregistrements qui se sont répétés
- Pour effectuer des synthèses
Comprendre les relations
Lorsque des requêtes s'étendent sur plusieurs tables, Access inscrit automatiquement les liens entre les tables (on peut modifier les relations pour la requête, mais ce n'est pas recommandé). La relation force Access à trouver tous les enregistrements pour lequel une correspondance existe entre les 2 tables, et à créer une 3e table temporaire avec toutes les combinaisons possibles.
Remarque: Si on ne fait pas de relations, Access effectuera le produit cartésien, i.e. qu'il croisera tous les enregistrements de la première table avec tous ceux de la seconde, même si aucune relation n'existe.
Left/rigth/inner Join
La plus grande différence entre les requêtes basées sur une seule table et les requêtes basées sur des tables reliées est la jointure. Cela revient à se poser la question: Comment la requête sera-t-elle exécutée si un enregistrement d'une table ne trouve pas de correspondance dans l'autre table?
La réponse est: Ça dépend. Le programmeur doit indiquer à Access comment réagir.
- Double-cliquez sur la relation.
- Choisissez la réaction souhaitée.
- Le fonctionnement habituel est de ne sélectionner que les enregistrements pour lequel une correspondance existe. Par exemple, si on cherche dans une base de données qui relie des parents à des enfants, une ligne est faite pour chaque lien parent-enfant. Le même parent pourra aparaître plusieurs fois s'il a plusieurs enfants.
- Access nous offre d'afficher les données d'une table même si aucune correspondance n'existe. Il considère alors que les données de l'autre table sont comme des entrées NULL. Les données sans correspondance n'apparaisse qu'une seule fois. Il faut aussi choisir quelle est la table principale. Une seule peut être choisie. Chaque enregistrement de la table principale apparaîtra au moins une fois, et les données de la table secondaire apparaîtront au besoin.
Requête basée sur autre(s) requête(s)
Une requête peut être basée sur une autre requête plutôt que sur une table. Cela peut être utile lorsque Access doit faire des recherches intermédiaires. Par exemple:
- Une requête doit chercher des instructions ligne par ligne, jamais en comparant une ligne avec une autre. Si 2 lignes doivent être comparées, il est parfois plus simple de faire une requête qui cherche certains critères, puis une 2e requête qui compare la table de départ avec la première requête. Il faut alors préciser à Access comment joindre les 2.
- Si un calcul doit être fait à partir d'un autre calcul, il faut alors faire le premier calcul dans une requête à partir de la table, puis le second calcul à partir de la requête. Remarque: cette technique peut être utilisée récursivement. Si on doit effectuer un 3e calcul à partir du 2e, il faudra faire une 3e requête à partir de la 2e, et ainsi de suite.
Module suivant