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   -
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



--
Je me promène avec mon smourbiff poilu. Vuivui, vous avez bien compris, il a des poils.

2 réponses

  1. o_edo1 Messages postés 31 Date d'inscription   Statut Membre Dernière intervention   20
     
    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
    1. varfendell Messages postés 3259 Date d'inscription   Statut Membre Dernière intervention   707
       
      La ça fonctionne!!!!! Merci beaucoup :) Vraiment!
      0
  2. o_edo1 Messages postés 31 Date d'inscription   Statut Membre Dernière intervention   20
     
    SELECT commande_id, `user_id`, `date`
    FROM historique_commande_user
    WHERE user_id = 74
    ORDER BY date DESC
    LIMIT 0,1
    et voilà.
    0
    1. varfendell Messages postés 3259 Date d'inscription   Statut Membre Dernière intervention   707
       
      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