|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Candidat au titre de Membre du Club
![]() Étudiant Inscription : décembre 2010 Messages : 52 ![]() |
Bonjour,
Je suis entrain de m'auto-former sur la création des bases de données, Access et SQL. Je m'exerce notamment sur : http://mhubiche.developpez.com/Access/cours/bases/. J'ai créé les tables suivantes sur Access avec les relations correspondantes : INTERVENTION (Num_Inter, #ID_Clt, Type) MATERIEL (Ref_Mat, Description_Mat, PU_Mat, Qte_Mat) NECESSITER (#Num_Inter, #Ref_Mat, Qte_Necessaire) COMPOSE_DE (#Ref_Compose, #Ref_Composant, Qte_Comp) En gros, Une intervention est réalisée sur un matériel donné qui peut composer d'autres matériels. Je souhaite savoir le nombre de composants réparés lors d'une intervention et je n'arrive pas à le faire sur Access ou via SQL. Comment procéder s'il vous plaît ? |
|
|
00
|
|
|
#2 |
![]() ![]() ![]() Claude LELOUPChercheur de loisirs (ayant trouvé !) Inscription : novembre 2006 Messages : 5 242 ![]() |
Bonjour,
Ne peux-tu poster une BDD compatible Access2000 avec un exemple concret? J'essaierai bien volontiers.
__________________
Amoureuse/amoureux de la langue française ? Vous pouvez nous aider à corriger nos ressources ! |
|
|
01
|
|
|
#3 |
![]() ![]() Maintenance données produits Inscription : décembre 2005 Messages : 3 939 ![]() |
Bonjour,
ou avec un exemple. Admettons que l'intervention concerne une unité centrale d'ordinateur. Cas 1, on remplace l'unité centrale. Veux-tu compter les éléments qui composent cette unité centrale ? Ou bien comptabiliser 0 composant car on a remplacé un produit fini. Cas 2, on remplace un disque dur et deux barrettes mémoire. Est-ce que tu veux compter le nombre de composants différents (2) ? Ou bien simplement le nombre de composants (3) ? Encore une question. Dans NECESSITER (#Num_Inter, #Ref_Mat, Qte_Necessaire), quelle est la nature de Ref_Mat ? Est-ce que c'est toujours un composant, ou bien ça peut aussi être un produit fini ? Je pense que c'est la deuxième option, mais c'est pour être sûr. A+ |
|
|
10
|
|
|
#4 |
|
Candidat au titre de Membre du Club
![]() Étudiant Inscription : décembre 2010 Messages : 52 ![]() |
Bonjour
En effet, dans la table NECESSITER, un matériel peut-être un composant ou un composé. Pour le cas 2 : Je souhaite avoir le détail. Donc ma requête devrait m'afficher comme résultat : Pour une intervention X : Disque dur ----> 1 RAM ----------> 2 Pour le cas 1 : Le résultat de ma requête devrait me donner : Composants -------> 0 puisque on a remplacé un produit fini et non un composant en particulier. Merci !! |
|
|
00
|
|
|
#5 | ||||||
![]() ![]() Maintenance données produits Inscription : décembre 2005 Messages : 3 939 ![]() |
Bonjour,
Voici une requête ... Code sql :
Un composant est un Ref_Mat ayant au moins une correspondance avec le champ Ref_Composant de la table COMPOSE_DE. Je n'ai, volontairement, pas utilisé de requête avec une jointure sur la table COMPOSE_DE, pour éviter la duplication des enregistrements de NECESSITER, dans le cas où un composant fait partie de plusieurs matériels. L'utilisation de la fonction domaine DCount (propre à Access, ce n'est pas du SQL) est un moyen pratique de vérifier l'existence d'un enregistrement dans une table. Si on se trouve dans la situation du cas 1, la requête ne retourne aucun enregistrement. Ce que l'on peut faire, c'est enregistrer cette requête, sous le nom R_NECESSITER_COMPOSANT, et en construire une nouvelle, basée sur la table INTERVENTION et sur la requête R_NECESSITER_COMPOSANT. En mettant une jointure gauche (LEFT JOIN) entre INTERVENTION et R_NECESSITER_COMPOSANT, on est sûr d'avoir au moins un enregistrement en sortie. Code sql :
Si l'intervention ne concernait aucun composant, elle retourne le numéro d'intervention et des champs vides (Null) pour tout ce qui vient de R_NECESSITER_COMPOSANT, du au fait de l'absence d'enregistrement correspondant dans R_NECESSITER_COMPOSANT. Il existe une fonction dans Access qui permet de remplacer Null par ce que l'on veut. Je m'en sers ici avoir 0 dans Qte_Necessaire : Code sql :
A+ |
||||||
|
|
10
|
|
|
#6 | ||
|
Candidat au titre de Membre du Club
![]() Étudiant Inscription : décembre 2010 Messages : 52 ![]() |
Très intéressante ta réponse, mille merci !!
Je ne connaissais pas les fonctions que tu as citées. Pour ma part, j'ai essayé avec du code SQL uniquement (je rappelle que je suis novice, donc pitié Code :
Mais, quand je rajoute les éléments de la table Compose_De, il m'affiche plus rien... |
||
|
|
00
|
|
|
#7 | |||
![]() ![]() Maintenance données produits Inscription : décembre 2005 Messages : 3 939 ![]() |
Bonjour,
Citation:
Tu peux vérifier s'il n'y a pas eu une erreur de copier/coller ? A+ |
|||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com