Exercice Access : Requêtes relation entre les tables et jointure
Rédigé par GC Team, Publié le 31 Décembre 2011, Mise à jour le Mercredi, 14 Décembre 2022 19:5726- Créez une requête qui affiche le prénom, le nom et la date d'embauche des employés dont le choix de l'année est laissé à l'utilisateur de la requête.
* Requête avec entrée de valeur (requête paramétrée).
27- Affichez le numéro de facture, nom et adresse du client ainsi que le prénom et nom du vendeur.
* Requête basée sur plusieurs tables.
28- Affichez le nom de l'employé ainsi que le nombre des différents produits, avec description du produit, qu'il (ou elle) a vendu.
* Requête basée sur plusieurs tables reliées avec l'opération compte.
29- Affichez le total des ventes par clients.
* Requête basée sur plusieurs tables reliées avec l'opération somme et un champ calculé.
30- Utilisez une requête pour entrer les données de factures.
* Requête basée sur plusieurs tables pour entrer des enregistrements.
26- Créez une requête qui affiche le nom, le prénom et l'année d'embauche des employés dont le choix de l'année est laissé à l'utilisateur de la requête.
Contrairement aux autres requêtes où les critères de sélection étaient déterminés dans le mode de création, cette requête donne un choix à l'utilisateur en lui posant une question. Cette requête va aussi vous demander d'utiliser un champ calculé avec la fonction Année() sur le champ de type Date/Heure Embauche.
-Créez une nouvelle requête en mode création.
-De la liste des tables et des requêtes, sélectionnez la table Employés.
-Sélectionnez le type de requête Sélection en appuyant sur le bouton .
OU
-Du menu Requête, sélectionnez l'option Requête sélection.
-De la liste des champs, sélectionnez les champs Prénom et Nom.
-À la droite des champs précédents sur la ligne des champs, entrez le champ calculé suivant: Année d'embauche: Année([embauche]) .
-Sur la ligne des critères sous le champ calculé Année d'embauche, entrez le texte suivant : [Quelle est l'année d'embauche? (4 chiffres) Ex: 1998] .
Voici les champs et les options pour les critères.
Champ: |
Prénom |
Nom |
Année d'embauche: Année([embauche]) |
Table: |
Employés |
Employés |
|
Tri: |
|||
Afficher: |
X |
X |
X |
Critères: |
[Quelle est l'année d'embauche? (4 chiffres) Ex: 1998] |
-Exécutez la requête en appuyant sur le bouton !.
-Pour les besoins de l'exercice, entrez l'année 1993 dans la case de la valeur du paramètre.
-Appuyez ensuite sur le bouton OK.
Access va ensuite afficher le résultat suivant.
Suzanne |
Rémi |
1993 |
Éric |
Gendron |
1993 |
Roger |
Dubuc |
1993 |
Élise |
Lavigueur |
1993 |
Paul |
Gendron |
1993 |
Au lieu de poser une question, la requête peut chercher l'information qui vient d'un champ situé dans un formulaire. Le critère ressemblerait à ceci: [Formulaires]![Nom du formulaire]![Nom du champ] . C'est de cette manière qu'on commence à créer une présentation plus "formelle" pour les données. Vous pouvez utiliser le générateur d'expression en appuyant sur le bouton pour aller chercher les contrôles que vous avez besoin dans la base de données.
27- Affichez le numéro de facture, nom et adresse du client ainsi que le prénom et nom du vendeur.
-Créez une nouvelle requête en mode création.
-De la liste des tables disponibles, sélectionnez les tables Clients, Factures et Employés.
Il faut maintenant ajouter les champs à la requête.
-De la table Factures, sélectionnez le champ Numéro de facture.
-De la table Clients, sélectionnez les champs Nom et Adresse.
-De la table Employés, sélectionnez les champs Prénom et Nom.
Il serait possible à partir de ce point d'exécuter la requête. Cependant, vous n'auriez pas le résultat voulu puisqu'il n'y a pas de relations entre les tables. Access afficherait toutes les combinaisons possibles. La prochaine étape consiste à créer les relations entre les tables de cette requête. Auparavant, il faut premièrement voir quels sont les champs en commun entre ces tables. Entre les tables Clients et Factures les champs en commun sont No Client et Code Client respectivement. Entres les tables Factures et Employés, les champs en commun sont No Vendeur et Numéro de poste. Tous ces champs sont de mêmes types et de mêmes longueurs. Mais surtout, ils contiennent le même genre d'information; le numéro de référence sur le client ou sur l'employé.
-Placez le pointeur sur le champ No client de la table Clients.
-En gardant un doigt sur le bouton gauche de la souris, déplacez le pointeur sur le champ Code client de la table Factures.
-Relâchez ensuite le bouton de la souris.
Une ligne va apparaître entre ces deux champs. Ceci indique qu'il y a une relation entre les deux tables. Ces deux tables sont maintenant reliées sur un champ en commun. Ceci rend possible d'accéder aux informations de l'autre table. Par exemple, en connaissant le numéro de référence de la facture, il est possible de connaître le nom, l'adresse ainsi que toutes les autres informations sur le client.
Voici ce qu'il faut faire pour retirer la relation. Au cas, ou vous auriez fait la relation sur des champs différents que ceux mentionnés.
-Cliquez sur la ligne qui relie les deux tables.
-Du menu Édition, sélectionnez l'option Supprimer.
OU
-Appuyez sur la touche supprime du clavier.
Il reste à relier les tables Factures et Employés sur leurs champs en commun: No vendeur et Numéro du poste.
-Placez le pointeur sur le champ No vendeur de la table Factures.
-En gardant un doigt sur le bouton gauche de la souris, déplacez le pointeur sur le champ Numéro de postede la table Employés.
-Relâchez ensuite le bouton de la souris.
Le résultat final devrait ressembler à ceci. Si vous n'avez pas ce résultat, refaites les relations entre les tables.
Champ: |
No Facture |
Nom |
Adresse |
Prénom |
Nom |
Table: |
Facture |
Clients |
Clients |
Employés |
Employés |
Tri: |
|||||
Afficher: |
X |
X |
X |
X |
X |
Critères: |
-Exécutez la requête en appuyant sur le bouton !.
Résultat:
No Facture |
Client.Nom |
Adresse |
Prénom |
Employés.Nom |
1 |
Alpha Ltée |
1000 Lavigne |
Denis |
Lambert |
2 |
Béatrix Inc. |
2000 Des Ormeaux |
Suzanne |
Rémi |
3 |
Charles et Cie. |
3000 St-Hubert |
Éric |
Gendron |
Au moment de l'affichage du résultat, Access fait la différence entre le champ Nom de la table Clients et de la table Employés en affichant le nom de la table devant le nom du champ (Clients.Nom et Employés.Nom).
28- Affichez le nom de l'employé ainsi que le nombre de produits qu'il a vendu.
Cette requête nécessite aussi le contenu de plusieurs tables pour la réaliser. Mais elle démontre aussi les liens "indirects" entre les tables de la base de données. Bien qu'il n'y a pas de liens "directs" entre les tablesEmployés et Inventaire, il est possible de les "relier" en utilisant les tables Facture et Transition Fact-Inv. De cette façon, il est possible d'avoir dans la même requête les champs Nom et Prénom de la table Employéet Description de la table Inventaire.
Une autre différence entre cet exercice et le précédent est l'utilisation de l'opération Compte pour savoir combien d'items ont été vendus et par qui. Il est bien possible qu'il y ait un bonus si le vendeur a atteint son quota pour un item. Voici la liste des tables et des relations dont vous avez besoin.
Si vous ne savez pas comment relier les tables, veillez lire l'exercice précédent.
Critère:
Champ: |
Prénom |
Nom |
Description |
Quantité |
Table: |
Employés |
Employés |
Inventaire |
Transition Fact-Inv |
Opération |
Regroupement |
Regroupement |
Regroupement |
Somme |
Tri: |
||||
Afficher: |
X |
X |
X |
X |
Critères: |
-Exécutez la requête en appuyant sur le bouton !.
Résultat:
Prénom |
Nom |
Description |
SommeDeQuantité |
Denis |
Lambert |
Patin à roulette |
1 |
Denis |
Lambert |
Planche à neige |
4 |
Denis |
Lambert |
Ski |
3 |
Denis |
Lambert |
Vélo de montagne |
2 |
Éric |
Gendron |
Patin à roulette |
4 |
Éric |
Gendron |
Vélo de montagne |
3 |
Suzanne |
Rémi |
Patin à roulette |
4 |
Suzanne |
Rémi |
Vélo de montagne |
5 |
29- Affichez le total des ventes par clients
Cet exercice utilise aussi plusieurs tables reliées pour avoir le résultat voulu. Il utilise aussi l'opération Somme et un champ calculé pour déterminer le total des ventes par items. C'est surtout une requête qu'un gestionnaire serait intéressé de voir. Il pourrait connaître qui sont ses meilleurs clients. Voici les tables reliées et leur relations.
Critère:
Champ: |
Nom |
Total: Quantité * [prix unitaire] |
Table: |
Clients |
|
Opération |
Regroupement |
Somme |
Tri: |
||
Afficher: |
X |
X |
Critères: |
-Exécutez la requête en appuyant sur le bouton !.
Résultat:
Q29: Revenus par client
Nom |
Total |
Alpha Ltée |
3 805 ,00 $ |
Béatrix Inc. |
970 ,00 $ |
Charles et cie |
670,00 $ |
30- Utilisez une requête pour entrer les données de factures.
Il est aussi possible d'utiliser une requête pour entrer des données. La requête doit avoir, au minimum, l'un des champs en commun des tables reliées. De plus, le champ en commun doit être celui qui permet d'entrer plusieurs fois la même information. Par exemple, entre les champs No Facture et Numéro de facture qui relient les tablesFacture et Transition Fact-Inv, il faut utiliser le second. Donc, pour cet exercice, il faut au minimum les champs Numéro de facture, Code Client, No vendeur et Numéro de produit. On pourrait ensuite choisir d'autres champs. Pour démontrer l'efficacité de cette requête, seulement les champs suivants seront ajoutés:Nom (de la table Clients), adresse et quantité. De plus, un champ calculé sera ajouté à la fin de chaque enregistrement pour déterminer le total de l'item. La formule sera la suivante: Total: quantité * [prix unitaire] .
Champ: |
Nunméro de Facture |
Code Client |
Nom |
Adresse |
No Vendeur |
Numéro de produit |
Quantité |
Total: quantité * [Prix unitaire] |
Table: |
Transition Fact-Inv |
Clients |
Clients |
Clients |
Facture |
Transition Fact-Inv |
Transition Fact-Inv |
|
Tri: |
||||||||
Afficher: |
X |
X |
X |
X |
X |
X |
X |
|
Critères: |
||||||||
-Entrez les données suivantes dans les champs appropriés.
Cette partie de l'exercice consiste à entrer trois enregistrements dans la base de données. Il suffit d'entrer les informations suivantes dans les champs Numéro de facture, Code Client, No Vendeur, Numéro de produit et Quantité.
Le premier enregistrement créer une nouvelle facture avec les informations sur le client. Le second enregistrement ajoute un item à la facture précédente. Il faut entrer le même numéro de facture que l'enregistrement précédent. Access va retrouver la facture et afficher les informations sur le client et le vendeur automatiquement. Il faudra ensuite entrer un autre produit et sa quantité. Access va refuser de continuer si vous essayer d'entrer une seconde fois le même numéro de produit. Cela provoquerait un dédoublement d'informations pour la clé primaire ce qui est interdit.
Le troisième enregistrement consiste à entrer de l'information pour une autre facture afin de démontrer que vous pouvez toujours entrer d'autres enregistrements. Il faut laisser le champ Numéro de facture vide lorsque vous commencer une nouvelle facture. Puisqu'il s'agit d'un champ de type NuméroAuto, Access va automatiquement insérer un chiffre. Pour entrer un autre item sur une facture qui existe déjà, vous devez écrire le numéro de facture existant dans le champ Numéro de facture. De cette façon, vous pouvez entrer plusieurs items sur une même facture.
Numéro de Facture |
Code Client |
No Vendeur |
Numéro de produit |
Quantité |
Aucune |
1 |
2 |
1 |
10 |
Même qu'Access à déterminé à l'enregistrement ci-dessus |
Même |
Même |
2 |
20 |
Aucune |
2 |
3 |
1 |
10 |
Il est inutile d'entrer un numéro pour commencer une nouvelle facture. Les tables Facture et Transition Fact-Inv sont reliées avec l'option d'intégrité référentiel. Mais surtout, l'option Mise à jour en cascade a été activé. Cela veut dire que, lorsque vous ne mettez pas de chiffres, Access va voir s'il y a une valeur équivalente dans la table Facture. Puisque No Facture est la clé primaire de la table, est qu'il est impossible d'avoir un champ vide, cela force Access a créer un nouvel enregistrement dans la table Facture et de lui donner un numéro. Ce numéro est ensuite retransféré au champ Numéro de facture.
Le second enregistrement est pour vous démontrer qu'il est possible d'entrer plusieurs items sur une même facture. Il suffit d'écrire le même numéro de facture dans le champ No Facture. Cependant, grâce à la clé primaire composée de plusieurs champs de la table Fact-Inv, l'utilisateur de la base de données ne pourra pas entrer plusieurs fois le même item sur la même facture.