Distinct ou ?

Résolu/Fermé
dan91 - 19 juil. 2013 à 18:46
nathan974 Messages postés 38 Date d'inscription jeudi 17 janvier 2013 Statut Membre Dernière intervention 26 juillet 2013 - 26 juil. 2013 à 15:06
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

3 réponses

nathan974 Messages postés 38 Date d'inscription jeudi 17 janvier 2013 Statut Membre Dernière intervention 26 juillet 2013 43
26 juil. 2013 à 14:04
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
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 jeudi 17 janvier 2013 Statut Membre Dernière intervention 26 juillet 2013 43
26 juil. 2013 à 15:06
T'as trouvé une solution encore plus simple que la mienne :D !

De rien, bon courage à toi
0