salut à tous,
j'ai une table "table" de ce type :
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
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...
Ceci fonctionne et me renvoie ce que je veux :
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...
Mais c'est très lent !!!
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) )
alors j'ai essayé comme ça, mais ça ne marche pas :
quelqu'un a une idée ?
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)
Partager