|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Étudiant Inscription : février 2008 Messages : 6 ![]() |
Bonjour à tous,
Je ne pense pas que cela soit possible en pur SQL sous Access sans utiliser VBA, mais sait-on jamais. J'ai une table table1 qui contient les champs "reference" et "nomenclature". Or, certaines nomenclatures peuvent aussi être des références(et donc comporter des sous-nomenclatures) Reference nomenclature aaaa 123 aaaa 456 aaaa 789 ... 789 111 111 222 333 444 555 666 Je voudrais donc récupérer toutes les nomenclatures correspondant à une référence donnée, ainsi que les sous-nomenclatures, c'est à dire, selon l'exemple, en entrant la référence "aaaa", il faudrait que je récupère 123,456,789,111,222. Je pense avoir été clair, mais n'hésitez pas à me demander d'autres explications Merci beaucoup d'avance pour votre aide ![]() Ps: Si impossible en SQL, une idée de la manière dont faire ça en vba sans que ça soit trop lourd? |
|
|
00
|
|
|
#2 | ||
|
Membre actif
![]() Quentin D.Étudiant Inscription : avril 2011 Messages : 175 ![]() |
Bonjour,
J'ai fait un petit test avec des valeurs fictives comme celles que vous mettez, j'ai utilisé l'assistant de requête. Il vous suffit de mettre 2 fois votre table et de faire une jointure avec la reference de la 1ère et la nomenclature de la 2ème. Cela vous donnera alors : Code :
__________________
Pourquoi faire aujourd'hui ce que l'on peut remettre à demain ?
|
||
|
|
00
|
|
|
#3 | ||
|
Invité de passage
![]() Étudiant Inscription : février 2008 Messages : 6 ![]() |
Bonjour !
Merci pour votre réponse ! Toutefois j'ai un doute quant à cette requête, à moins que je ne me trompe sur son emploi: Code :
COMBBB: B 0741001 B 0741001 B 0741001 B 0741001 ...19 fois Une suggestion ? Encore merci |
||
|
|
00
|
|
|
#4 | ||
|
Membre actif
![]() Quentin D.Étudiant Inscription : avril 2011 Messages : 175 ![]() |
En fait le résultat veut dire que dans ta table, tu as 19 fois la référence à B 0741001 qui est répétée, cad que tu as :
-Un certain nombre de fois B 0741001 répété dans la colonne référence. -Un certain nombre de fois B 0741001 répété dans la colonne Nomenclature. Et donc au total, il se répète 19 fois. Alors, le problème est (je pense) que justement tu sélectionnes dans table plutot que dans table_bis la reference, cad : Code :
__________________
Pourquoi faire aujourd'hui ce que l'on peut remettre à demain ?
|
||
|
|
00
|
|
|
#5 |
|
Membre émérite
![]() ![]() Conseil + Formation Inscription : février 2010 Messages : 583 ![]() |
Bonjour
Ta table a-t-elle une clé primaire et si oui laquelle ? Combien de niveaux peut-il y avoir : il faut mettre autant de fois la table que de niveaux inférieurs. Il faut sélectionner des champs dans chaque occurrence des tables pour avoir ta liste... |
|
|
00
|
|
|
#6 |
|
Membre actif
![]() Quentin D.Étudiant Inscription : avril 2011 Messages : 175 ![]() |
Ok, je viens de comprendre ce que tu cherches à faire, c'est plus compliqué que ma simple requête. Je pense qu'il faut chercher des requêtes imbriquées plutôt...
Je vais regarder si j'y arrive.
__________________
Pourquoi faire aujourd'hui ce que l'on peut remettre à demain ?
|
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() Étudiant Inscription : février 2008 Messages : 6 ![]() |
La table a même deux clés primaires, aussi bien la référence que la nomenclature.
Je ne connais pas le nombre de niveaux car il dépend des produits, pour expliquer concrètement ce que je cherche à faire, je veux, en tapant la référence d'un produit, pouvoir récupérer la liste des pièces qui le compose, sachant que chaque pièce peut parfois elle même être constituée d'autres sous-pièces etc... Le problème se corse donc ! |
|
|
00
|
|
|
#8 |
|
Membre émérite
![]() ![]() Conseil + Formation Inscription : février 2010 Messages : 583 ![]() |
Bonjour
Donc c'est bien ce que j'indique : il faut ajouter autant de fois la table que de niveaux possibles, prendre le 1er champ de la 1ère occurrence puis prendre à chaque fois le second pour toutes les autres. Sinon il faut créer une requête récursive mais à moins que cela soit apparu dans 2010, elle n'existe pas dans Access. Vois ce fil qui peut le faire en vba http://loufab.developpez.com/tutorie...ss/recherche1/ |
|
|
00
|
|
|
#9 |
|
Invité de passage
![]() Étudiant Inscription : février 2008 Messages : 6 ![]() |
Hmm, donc ne connaissant pas le nombre de niveaux, je n'ai pas d'autres choix que de me tourner vers VBA comme je le craignais...
A moins que quelqu'un n'ai une autre idée miracle ? |
|
|
00
|
|
|
#10 |
|
Membre émérite
![]() ![]() Conseil + Formation Inscription : février 2010 Messages : 583 ![]() |
Bonjour
Le lien que j'ai indiqué ne correspond pas à ce cas. Ne connais-tu pas le nombre maximal de niveaux : ce n'est lié à un ca précis mais au nombre maxi de tes nomenclatures. En ORACLE cela correspond à la commande SQL CONNECT BY si cela peut t'aider à googleïser |
|
|
00
|
|
|
#11 |
|
Invité de passage
![]() Étudiant Inscription : février 2008 Messages : 6 ![]() |
Le nombre maximal de niveaux ne doit, à mon avis, pas excéder 20, donc on peut partir sur la base d'une vingtaine, si ça permet d'avoir une solution en SQL !
|
|
|
00
|
|
|
#12 |
|
Membre émérite
![]() ![]() Conseil + Formation Inscription : février 2010 Messages : 583 ![]() |
Bonjour
Ne pas oublier d'orienter toutes les relations de la 1ère occurrence vers la dernière. |
|
|
00
|
|
|
#13 |
|
Invité de passage
![]() Étudiant Inscription : février 2008 Messages : 6 ![]() |
Par contre, Access ne semble pas accepter Select.. Connect By, ou alors j'ai fais une recherche trop superficielle :-/
|
|
|
00
|
|
|
#14 |
|
Membre émérite
![]() ![]() Conseil + Formation Inscription : février 2010 Messages : 583 ![]() |
Re
C'est ce que je disais à 11h43 en disant que les requêtes récursives n'existent pas dans ACCESS. Donc je ne vois que VBA pour produire quelque chose de ce type à part la solution SQL proposée consistant à insérer x fois la table dans la requête. |
|
|
00
|
|
|
#15 | |
|
Expert Confirmé Sénior
![]() ![]() Fabien Enseignant Inscription : janvier 2009 Messages : 2 415 ![]() |
bonsoir,
je mets un lien vers la discussion ouverte par cléclé64: Arborescence dans un logiciel de gestion de stock sujet qui traite également des nomenclatures et des traitements récursifs. Pas simple, simple... Citation:
|
|
|
10
|
Copyright © 2000-2012 - www.developpez.com