Distinct ou ?

Résolu
dan91 -  
nathan974 Messages postés 38 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'ai une table SQL qui contient : annee,no_lot,nom et j'ai mis un index sur (annee,no_lot).
Dans cette table je peux avoir pour un même no_lot des années différentes. Je voudrais récupérer pour chaque lot, la ligne du lot ayant la l'année la plus élevée et les données associées (nom..). J'ai essayé SELECT DISTINCT(no_lot) avec ORDER BY sur annnee. SQL me sort bien le nombre de ligne que j'attendais mais lorsque j'ajoute les autres données (SELECT DISTINCT(no_lot),annee,nom ... SQL m'affiche tout...

Pouvez m'aider.

Merci
A voir également:

3 réponses

nathan974 Messages postés 38 Date d'inscription   Statut Membre Dernière intervention   43
 
Bonjour,

C'est normal que ta requête ne fonctionne pas, elle doit être un peu plus complexe que ça.

Essai :

SELECT t1. *
FROM nom_table t1
INNER JOIN (
SELECT no_lot, MAX( annee ) AS MaxAnnee
FROM nom_table
GROUP BY no_lot
)
groupedtt
ON t1.no_lot = groupedtt.no_lot
AND t.annee = groupedtt.MaxAnnee


En gros tu doit coupler ta table entière avec uniquement les lignes avec l'année max regrouper par no_lot. N'oublie pas de remplacer nom_table par le nom de ta table ;-)

0
dan91
 
Bonjour Nathan,

Merci de ta réponse. Effectivement tu as raison. Voila ce que j'ai passé et cela m'a résolu le pb :

SELECT no_lot, annee, nom FROM 'clm_t_coprop' u WHERE
annee = (select max(annee) from 'clm_t_coprop' where no_lot = u.no_lot)
order by no_lot asc ;

A bientôt et merci encore de ton support.
0
nathan974 Messages postés 38 Date d'inscription   Statut Membre Dernière intervention   43
 
T'as trouvé une solution encore plus simple que la mienne :D !

De rien, bon courage à toi
0