|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Invité de passage
![]() Inscription : juin 2007 Messages : 7 ![]() |
Bonjour,
Tout d'abord je tiens à indiquer que je sais parfaitement que DISTINCT ne peut être utilisé ici mais je ne trouvais pas de titre pour mon problème. Voici mon problème : J'ai une table comportant les colonnes suivantes : pseudo, point_id, date, note. Je souhaiterais obtenir la dernière personne étant passée par chaque point ainsi que la date de son passage et la note qu'il a laissée. Par exemple si ma table contient ces valeurs : Code :
Code :
|
||||
|
|
00
|
|
|
#2 | ||
|
Membre émérite
![]() Olivier DehorterIngenieur de recherche - Ecologue Inscription : juin 2003 Messages : 697 ![]() |
bonjour voici une possibilité :
Code sql :
note 1 : Il faut créer un index descendant sur la colonne "date" Note 2 : C'est une TRES mauvaise idée de donner un mot réservé à un nom de colonne
|
||
|
|
10
|
|
|
#3 | ||
|
Invité de passage
![]() Inscription : juin 2007 Messages : 7 ![]() |
Merci pour la réponse.
J'ai également trouvé ceci en cherchant et j'aurais aimé savoir s'il y avait une solution meilleure que l'autre ou pas ? Code :
|
||
|
|
10
|
|
|
#4 | |
|
Membre habitué
![]() Robert LabrousseDéveloppeur décisionnel Inscription : février 2009 Messages : 79 ![]() |
Bonsoir,
Geek87 votre requête est plus simple et plus performante (pas de GROUP BY), donc à utiliser.
__________________
Citation:
|
|
|
|
10
|
|
|
#5 |
|
Invité de passage
![]() Inscription : juin 2007 Messages : 7 ![]() |
Merci pour vos réponses à tous les deux !
Je marque résolu. |
|
|
00
|
|
|
#6 | ||
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 638 ![]() |
Bonjour,
Afin d'éviter plusieurs scannages de tables / index vous pourriez aussi utilisez une fonctions de fenêtrages : Code :
|
||
|
|
00
|
|
|
#7 | |||
|
Membre émérite
![]() Olivier DehorterIngenieur de recherche - Ecologue Inscription : juin 2003 Messages : 697 ![]() |
En effet, elle est plus rapide. Mais elle ne fournit pas les mêmes résultats
![]() Pour la sous requête, c'est ok. Mais avec la requête principale, elle renvoie toutes les infos pour les dates considérées (donc il peut avoir plusieurs lignes pour un même "Point_Id"). Citation:
|
|||
|
|
00
|
|
|
#8 |
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 638 ![]() |
au vu de la jointure "Table1.Point_id = Selection.Point_id" je penses que sa requête est bonne, vu que la date max considérée pour une ligne ne le sera que pour le point_id en question.
|
|
|
00
|
|
|
#9 |
|
Invité de passage
![]() Inscription : juin 2007 Messages : 7 ![]() |
Oui je viens de vérifier j'ai bien les mêmes résultats avec les deux requêtes. Je n'ai pas compris pourquoi cela ne devrait pas être le cas ?
|
|
|
00
|
|
|
#10 |
|
Membre émérite
![]() Olivier DehorterIngenieur de recherche - Ecologue Inscription : juin 2003 Messages : 697 ![]() |
![]() ![]() mea culpa, c'est ma faute oui cela marche |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com