Requete max date + distinct id

Fermé
varfendell Messages postés 3256 Date d'inscription jeudi 27 décembre 2007 Statut Membre Dernière intervention 8 février 2020 - 30 oct. 2014 à 13:42
varfendell Messages postés 3256 Date d'inscription jeudi 27 décembre 2007 Statut Membre Dernière intervention 8 février 2020 - 30 oct. 2014 à 14:32
Bonjour,

Voila, je planche sur un problème, et je ne voit pas de solution.

Mon soucis est le suivant: j'ai une table de jointure dont trois colonnes m'intéressent: [id_commande], [id_user] et [date]

Mon but étant, pour un user dont j'ai l'id, récupérer la liste des [id_commande], mais seulement pour chaque id_commande il faut la ligne la plus récente.

(Pour le contexte, mes users travaillent sur des commandes, et à chaque évolution d'une commande, il est indiqué qui et quand).

Donc, par exemple, je souhaite sélectionner tout mes id_commandes dont le id_user est 74, j'obtiens ça:

commande_id user_id date
1698 74 2014-08-20 11:02:09
1698 74 2014-08-20 11:02:17
1690 74 2014-08-28 08:23:01
1830 74 2014-08-28 09:16:52
1787 74 2014-08-28 16:15:30
1787 74 2014-08-28 16:16:11

Hors je ne veut pas la ligne 1 ni la ligne 5 (car les lignes 2 et 6 sont plus récentes).

Ma requête est la suivante:

SELECT commande_id, `user_id`, `date`
FROM historique_commande_user
WHERE user_id = 74;

J'ai essayé avec DICTINCT(commande_id) et MAX(date) mais ça ne résoud pas mon problème :(

Quelqu'un a une idée?

Cordialement

Varfendell



2 réponses

o_edo1 Messages postés 28 Date d'inscription lundi 20 octobre 2014 Statut Membre Dernière intervention 11 juillet 2015 20
30 oct. 2014 à 14:24
OK j'ai compris ce que tu veux cette fois.
SELECT commande_id, `user_id`, `date`
FROM historique_commande_user
WHERE user_id = 74
GROUP BY commande_id
HAVING date = MAX(date)
1
varfendell Messages postés 3256 Date d'inscription jeudi 27 décembre 2007 Statut Membre Dernière intervention 8 février 2020 699
30 oct. 2014 à 14:32
La ça fonctionne!!!!! Merci beaucoup :) Vraiment!
0
o_edo1 Messages postés 28 Date d'inscription lundi 20 octobre 2014 Statut Membre Dernière intervention 11 juillet 2015 20
30 oct. 2014 à 14:10
SELECT commande_id, `user_id`, `date`
FROM historique_commande_user
WHERE user_id = 74
ORDER BY date DESC
LIMIT 0,1
et voilà.
0
varfendell Messages postés 3256 Date d'inscription jeudi 27 décembre 2007 Statut Membre Dernière intervention 8 février 2020 699
30 oct. 2014 à 14:16
Cette requête ne me retourne que la ligne 1787 74 2014-08-28 16:16:11 (donc juste la ligne avec la date la plus récente quelque soit la requête et non pas pour chaque requête :s ).

Hors je souhaiterais que la requête me retourne pour chaque commande la ligne la plus récente.

Merci quand même de votre attention
0