salut à tous,
j'ai une table "table" de ce type :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
id   | version       |       valeur
 1    |    100         |    bla bla bla
 1    |    101         |    bla bla bla
 1    |    102         |    bla bla bla
 2    |    100         |    bla bla bla
 2    |    101         |    bla bla bla
 2    |    102         |     bla bla bla
 2    |    103         |    bla bla bla
etc...
je souhaite que ma requête dans la table me renvoie une ligne pour chaque ID, correspondant à la version la plus haute pour chaque ID, comme ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
ligne 1 : 1    -->    102         -->    bla bla bla
ligne 2 : 2    -->    103         -->    bla bla bla
etc...
Ceci fonctionne et me renvoie ce que je veux :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
SELECT id, version, valeur FROM table AS det WHERE EXISTS
        (SELECT  1
            FROM    table  AS  grp
            WHERE det.id   = grp.id
            GROUP BY grp.id
            HAVING  det.version = MAX(grp.version)
        )
Mais c'est très lent !!!

alors j'ai essayé comme ça, mais ça ne marche pas :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
SELECT id, version, valeur FROM table 
  GROUP BY id 
  HAVING version = MAX(version)
quelqu'un a une idée ?