bonjour
je rame sur le pbm suivant, qui est probablement très simple mais je suis nul
soient 2 tables :
T1 (ELEM, ID_T2)
T2 (ID, VALEUR)
T1.ELEM a des doublons (clef étrangère sur une autre table)
T1.ID_T2 est une clef étrangère sur T2
T2.ID est une clef primaire
je cherche pour chaque T1.ELEM distinct à récupérer le T2.ID correspondant au MAX(T2.VALEUR), n'importe lequel s'il y en a plusieurs
par ex le jeu de données suivant :
T1 T2 (1, 2) (1, 11) (1, 3) (2, 7) (3, 1) (3, 15) (3, 4) (4, 11)
devrait sélectionner dans T1 :
(T1.ELEM, T1.ID_T2)
(1, 3)
(3, 1) ou (3, 4) peu importe mais un seul
c'est du Firebird, qui accepte les fonctions de fenêtre et les CTE, et pour d'assez grosses tables (T1 > 100.000 et T2 autour de 1.000)
je tourne en rond, ce serait vraiment sympa d'abréger mes souffrances si c'était possible
edit : oups c'est parti trop vite
j'ai bien pensé a faire un row_num sur une sous requête (T1.ELEM, T2.ID, T2.VALEUR) classée par (T1.ELEM, T2.VALEUR) et sélectionner les row_num = 1 mais ça me parait lourd ?
Partager