|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : mai 2011 Messages : 6 ![]() |
Bonjour,
J'ai un problème dans une requêtes sous Access 2007 : Les forces en présences : 1 Table RESEAUX avec clef sur champs "Code_Reseau" 1 table FACES avec clef sur champs "Code_Face" Il y a 1 reseau pour N faces. La relation se fait entre le champs "Libelle_Reseau" de la table RESEAU, et le champs "Affectation_R" de la table FACES. Dans ma requête : J'ai (entre autre) le champs "Libelle_Reseau" de la table RESEAU, et le champs "Format" de la table FACES. Ce qui donne : Reseau_Dupont -- 400*300 Reseau_Martin -- 500*900 je veux pouvoir afficher dans ma requête un champs qui calculerait le nombre de fois (d'enregistrements) où la valeur "Libelle_Reseau" de chaque ligne de ma requête apparaîtrait dans le champs "Affectation_R de la table FACES. Ex : Table FACES : Reseau_Dupont -- y -- x Reseau_Martin -- y -- x Reseau_Martin -- y -- x La requêtre devrait donner : Reseau_Dupont -- 400*300 -- 1 Reseau_Martin -- 500*900 -- 2 J'espère avoir été clair et vous remercie par avance de vos propositions. J.claude |
|
|
00
|
|
|
#2 | |
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 176 ![]() |
Bonjour Access_Prime_time,
Citation:
Table RESEAUX - Code_Reseau (clé primaire) - Libelle_Reseau ... Table FACES - Code_Face (clé primaire) - Code_Reseau ==> et non Libelle_Reseau ... Relation RESEAUX 1---∞ FACES, via Code_Reseau ==> et non Libelle_Reseau. Ensuiite, via l'assistant, une requête qui lie RESEAUX à FACES, via Code_Reseau, groupée par Code_Reseau avec Count(*) devrat te donner ce que tu souhaites.
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : mai 2011 Messages : 6 ![]() |
Merci Richard,
Au temps pour moi, non seulement je me suis trompé dans mon énoncé mais votre remarque m'aura permis de corriger certaines choses : J'ai Table RESEAUX - Code_Reseau - Libelle_Reseau (clé primaire) ... Table FACES - Code_Face (clé primaire) -Affectation_R … Ma relation est faite entre : Table RESEAUX- Libelle_Reseau (clé primaire) & Table FACES - Affectation_R Là je peux sans problème faire mes requêtes, ça fonctionne. Pas de possibilité de se tromper puisque Affectation_R est une liste limitée au Libelle_Reseau.(Je dois impérativement les nommer différemment suivant la table où ils se trouvent) Dans ma requêtes je liste TOUS les réseaux de la Table RESEAUX + quelques champs de Table FACES. Là c'est ok. Par contre il me faut un champ supplémentaire dans cette requête qui sera le nombre d'enregistrement dans la Table FACES pour chaque Libelle_Reseau ou Affectation_R sortis dans la requête et se trouvant dans Table FACES. Exemple : Je ne peux avoir qu'1 seul Libelle-Reseau, dans lequel il y aura plusieurs faces. Je peux avoir le Réseau_Martin et le Réseau_Dupont etc. Ils vont sortir dans ma requête. Mais comme un Réseau comprend plusieurs faces, Réseau_Martin peut exister 200 fois dans la Table FACES (sous le même Code_Face). Et c'est ce nombre que je dois avoir dans ma requête, et pour chaque ligne suivant le Libelle_Reseau ou Affectation_R. PS: Je connais un petit peu le SQL mais ne suis pas capable de produire une syntaxe correcte quand cela se complique. |
|
|
00
|
|
|
#4 | ||
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 176 ![]() |
Citation:
- tu crées 1 RESEAU avec Libelle_Reseau="Libelé du réseau xxx" ; - tu lui associes 10 FACES (via Libelle_Reseau, donc) ; - tu t'aperçois qu'il y a une faute d'orthographe dans "Libelé du réseau xxx" ; - tu corriges cette faute en "Libellé du réseau xxx" ; ==> que penses-tu qu'il se passe ?... eh bien, tu perds tous tes liens avec FACES. Donc, impérativement : Table RESEAUX - Code_Reseau (clé primaire) - Libelle_Reseau ... Table FACES - Code_Face (clé primaire) -Affectation_R ==> qui doit contenir Code_Reseau … Ma relation Table RESEAUX- & Table FACES - Affectation_R Citation:
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
||
|
|
00
|
|
|
#5 | |
|
Invité de passage
![]() Inscription : mai 2011 Messages : 6 ![]() |
Ok richard, je vois ce que vous voulez dire pour les liens. Mais en fait c'est plus compliqué dans la pratique. Bref, j'ai une liste choix pour les réseaux et cela ne doit pas bouger.Merci du conseil. Mon impératif du moment est d'avoir ce champ dans ma requêtes qui compte le nombre d'enregistrements par Affectation_R.
Par contre lorsque vous dites : Citation:
|
|
|
|
00
|
|
|
#6 | ||
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 176 ![]() |
Avec le Count(*), il ne faut QUE les champs concernés par le groupe que tu veux compter.
Donc : une requête qui lie RESEAUX à FACES, via Code_Reseau/Affectation_R, groupée par Code_Reseau avec, uniquement : - Libelle_Reseau - Format - Count(*) ==> ce qui devrait te donner, dans ton exemple : Code :
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
||
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() Inscription : mai 2011 Messages : 6 ![]() |
Vraiment désolé mais il va falloir me parler comme si j'avais 5 ans
Quand vous dites une requête qui lie, je ne vois pas comment une requête peut lier quelque chose. Groupé par CodeRéseau ne me dit rien non plus. Vous parlez de mes 2 champs : - Libelle_Reseau - Format Mais où mettre le count(*) ??, et aussi comment ? |
|
|
00
|
|
|
#8 |
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 176 ![]() |
Bonjour Access_Prime_time,
Il faudrait que tu jettes un coup d'oeil sur les tutos concernant les requêtes et les jointures. C'est très bien expliqué et cela te donnera des bases précieuses. Reviens après ce petit tour de formation.
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|
|
10
|
|
|
#9 |
|
Invité de passage
![]() Inscription : mai 2011 Messages : 6 ![]() |
Merci Richard,
J'ai réussi à faire une requête avec ce fameux count(*) et regroupement sur Affectation_R. Cela fonctionne. (La nuit porte conseil Par contre lorsque je rajoute des champs, il me sort cette erreur : "Vous avez essayé d'exécuter une requête ne comprenant pas l'expression spécifié -Libelle_Afficheur" - comme une partie de la fonction d'agrégat. Si je fais Ok, il me redonne cette erreur sur TOUS les champs que j'ai ajouté à ma requête. |
|
|
00
|
|
|
#10 |
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 176 ![]() |
Il est impératif de respecter une analogie évidente entre la clause WHERE et la clause GROUP BY.
Dans l'assistant : - tous les champs choisis font partie du groupe que tu veux analyser ==> mention "regroupement" ; - tous les autres champs sont des champs calculés en fonction du groupe choisi ==> mention "Expression", "Somme", etc... En SQL : Code sql :
.../... SELECT X, Y, Z, sum(A), count(*) .../...
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|
|
10
|
|
|
#11 |
|
Invité de passage
![]() Inscription : mai 2011 Messages : 6 ![]() |
OK, tout fonctionne. Pour que cela serve à d'autre j'explique mon erreur :
Dans l'assistant je prenais mes champs à la suite comme je voulais qu'ils soient vu à l'écran. J'ai donc recommencé en mettant d'abord mes champs calculés, puis à la suite les autres champs. Et je n'ai plus d'erreur d'agrégat. A ma charge d'agencer mes champs dans le formulaire. Merci Richard pour votre patience et les solutions apportés.
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com