|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : février 2011 Messages : 4 ![]() |
Bonjour,
je suis confronté à un problème qui me paraissait à priori simple, mais dont je ne trouve pas la solution compte tenu de mon niveau de connaissance... bien modeste. Illustration : Dans Table, j'ai 4 champs : [id] (entier incrémenté, clé primaire), [type] (texte à choisir à partir d'une liste), [valeur] (nombre décimal) et [version] (nombre entier). Les données de la table complète se présentent à titre d'exemple ainsi : id----type----version----valeur 1----chèvre----1----5 2----chèvre----2----10 3----vache----1----3 4----brebis----1----4 5----chèvre----3----15 6----brebis----2----8 7---- brebis----3----12 8----vache----2----6 9----vache----3----9 Je souhaite réaliser une requête afin de n'obtenir une table ne présentant que les lignes complètes (les 4 colonnes donc) des enregistrements différenciés (groupés ?) par type ET ayant le nombre [version] le plus élevé. Mon problème : si j'utilise dans ma requête une opération de "regroupement" sur [type] et "max" sur la colonne [version], cela fonctionne tant que je n'affiche que ces deux colonnes [type] et [MaxDeversion] et me donne bien ceci : type----MaxDeversion brebis----3 chèvre----3 vache----3 Mais comme je souhaite retourner également les données des colonnes [id] et [valeur] pour ces lignes, le principe ne fonctionne plus car l'opération "regroupement" est alors effectuée sur ces deux colonnes et la requête retourne toutes les lignes du tableau (logique !). Y-a-t-il une solution soit en appliquant une autre opération que "regroupement" aux colonnes [id] et [valeur], et dans l'affirmative, quelle opération, soit par un autre moyen dans l'expression de la requête ? Mon tableau final devrait ressembler avec la bonne requête à cela : id----type----version----valeur 5----chèvre----3----15 7---- brebis----3----12 9----vache----3----9 J'espère avoir été assez précis dans mon exposé et excusez-moi si la réponse est évidente ! J'ai cherché longuement sans succès... Merci beaucoup pour votre attention et vos réponses. Yves |
|
|
00
|
|
|
#2 | ||
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 176 ![]() |
Bonjour Yves210420,
Tu as fait la moitié du chemin... Appelons R1 la requête qui t'a donné le résultat suivant : Code :
- ajouter R1 et Table (FROM) ; - lier R1 à Table via Type=>Type et MaxDeVersion=>Version (JOIN) ; - sélectionner les champs que tu veux, dont Id et Valeur (SELECT). ==> tu devrais obtenir le résultat souhaité.
__________________
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 : février 2011 Messages : 4 ![]() |
Bien,
merci Richard, la méthode des 2 requêtes avec 2 relations fonctionne parfaitement. Je comprends maintenant le principe, mais je pensais que la relation devrait impérativement se faire sur [ID] qui est unique, or je n'arrivais pas à le récupérer dans R1. Je vais tester cette solution dans le contexte réel de mes données qui ne traitent pas de ruminants mais de dépenses comptables prévisionnelles (d'où les versions) ! Je clôturerai la discussion quand j'aurai mis en place le truc, sauf imprévu... Merci encore. Yves |
|
|
00
|
|
|
#4 |
|
Invité de passage
![]() Inscription : février 2011 Messages : 4 ![]() |
Bonjour,
après quelques jours de travaux, l'ensemble des calculs sur les requêtes fonctionnent bien, en passant par une requête intermédiaire. Je passe donc le sujet en résolu. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com