Requete max date + distinct id
varfendell
Messages postés
3259
Date d'inscription
Statut
Membre
Dernière intervention
-
varfendell Messages postés 3259 Date d'inscription Statut Membre Dernière intervention -
varfendell Messages postés 3259 Date d'inscription Statut Membre Dernière intervention -
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
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
A voir également:
- Requete max date + distinct id
- Id telephone - Guide
- I14 pro max - Accueil - Guide téléphones
- Trouver une date de naissance gratuit - Forum Webmastering
- Publipostage date inversée ✓ - Forum Word
- Max ou netflix - Accueil - Streaming
2 réponses
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)
SELECT commande_id, `user_id`, `date`
FROM historique_commande_user
WHERE user_id = 74
GROUP BY commande_id
HAVING date = MAX(date)
varfendell
Messages postés
3259
Date d'inscription
Statut
Membre
Dernière intervention
707
La ça fonctionne!!!!! Merci beaucoup :) Vraiment!
SELECT commande_id, `user_id`, `date`
FROM historique_commande_user
WHERE user_id = 74
ORDER BY date DESC
LIMIT 0,1
et voilà.
FROM historique_commande_user
WHERE user_id = 74
ORDER BY date DESC
LIMIT 0,1
et voilà.
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
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