MySQL GROUP BY sur le dernier enregistrement

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par KOogar, 15 Mai 2009.

  1. KOogar
    KOogar WRInaute accro
    Inscrit:
    16 Novembre 2004
    Messages:
    4 643
    J'aime reçus:
    82
    Bonjour,

    je cherche a faire une requete qui groupe les pays et qui prend l'enregistrement le plus récent

    mysql> SELECT pays,product,date
    FROM tb
    GROUP BY pays
    HAVING date = max(date)
    ;
    +---------+------------+-------------+
    | pays | product | date |
    +---------+------------+-------------+
    | Finland | Computer | 2009-04-20 |
    | Finland | Phone | 2009-03-10 |
    | Suisse | Calculator | 2009-04-20 |
    | Suisse | Computer | 2008-02-10 |
    | US | Calculator | 2009-04-10 |
    +---------+------------+-------------+

    Le resultat doit contenir 3 enregistrements:

    Finland | Computer | 2009-04-20
    Suisse | Calculator | 2009-04-20
    US | Calculator | 2009-04-10

    La requete plus haut parait bonne mais elle ne fonctionne pas

    une idéeee ?
     
  2. poulpe
    poulpe WRInaute discret
    Inscrit:
    29 Juin 2004
    Messages:
    88
    J'aime reçus:
    0
    Bonjour.
    Peut etre ?
    SELECT pays,product,MAX(date) AS date
    FROM tb
    GROUP BY pays ORDER BY pays
     
  3. 5_legs
    5_legs WRInaute passionné
    Inscrit:
    30 Avril 2006
    Messages:
    1 521
    J'aime reçus:
    0
    Code:
    SELECT pays,product,date
    FROM tb
    GROUP BY pays
    HAVING max(date)
    comme ça non plus ?

    mouarf

    et là ?
     
  4. 5_legs
    5_legs WRInaute passionné
    Inscrit:
    30 Avril 2006
    Messages:
    1 521
    J'aime reçus:
    0
    en fait je pense même qu'il faut enlever le 1er group by

    Code:
    SELECT pays, product, date
    FROM tb
    HAVING date IN (SELECT MAX(date) FROM tb GROUP BY pays)
    ORDER BY pays
    
    Mais niveau optimisation c'est certainement pas la meilleure solution :oops:
     
  5. jamalofski
    jamalofski WRInaute discret
    Inscrit:
    3 Mars 2007
    Messages:
    225
    J'aime reçus:
    0
    Celle la je crois est plus légère étant donné qu'il y a aucun GROUP BY, enfin je crois!
    Code:
    select t1.pays, t1.product, t1.date
    from tb t1
    where t1.date = (select max(t2.date) from tb t2 where t2.pays=t1.pays)
    ORDER BY pays
    
    Le problème c'est qu'il a besoin de product, sinon cette requête aurait suffit.
    Code:
    SELECT pays, max(date)
    FROM tb
    GROUP BY pays
     
  6. KOogar
    KOogar WRInaute accro
    Inscrit:
    16 Novembre 2004
    Messages:
    4 643
    J'aime reçus:
    82
    Code:
    select t1.pays, t1.product, t1.date
    from tb t1
    where t1.date = (select max(t2.date) from tb t2 where t2.pays=t1.pays)
    ORDER BY pays
    j'ai testé chaque requete au fur qu'elles ont été posté et celle ci est la bonne

    Merci jamalofski, c'est impeccable
     
  7. 5_legs
    5_legs WRInaute passionné
    Inscrit:
    30 Avril 2006
    Messages:
    1 521
    J'aime reçus:
    0
    oops effectivement il me manquait une jointure.

    Qu'importe, l'exercice fût amusant :)
     
Chargement...
Similar Threads - MySQL GROUP dernier Forum Date
Mysql - un Group by non trié sur plusieurs tables ... Développement d'un site Web ou d'une appli mobile 13 Mars 2013
MySQL : comment grouper les entrées puis les trier ? Développement d'un site Web ou d'une appli mobile 21 Mars 2011
Regrouper des expressions qui se ressemblent, en PHP ou MySQL, à l'aide Développement d'un site Web ou d'une appli mobile 6 Mars 2011
Requête mysql avec GROUP BY Développement d'un site Web ou d'une appli mobile 3 Septembre 2010
[MySQL] Récupérer la première ligne d'un GROUP BY Développement d'un site Web ou d'une appli mobile 14 Décembre 2009
[résolu][MySQL] Sélection groupée et comptage Développement d'un site Web ou d'une appli mobile 22 Septembre 2008
MySQL : SELECT spécial avec GROUP BY sur condition ? Développement d'un site Web ou d'une appli mobile 13 Mai 2008
Aide MySQL pour regroupement par intervalles Développement d'un site Web ou d'une appli mobile 23 Juin 2007
Mysql : Impact convertion champ numérique SMALLINT vers BIGINT Développement d'un site Web ou d'une appli mobile 23 Août 2021
Quel SGBDR autre que MySQL/MariaDB ? Administration d'un site Web 12 Janvier 2021
encodage texte sur requete mysql Demandes d'avis et de conseils sur vos sites 21 Octobre 2020
Requête MySql imbriquée Développement d'un site Web ou d'une appli mobile 8 Octobre 2020
Supprimer les doublons d'une table mysql Développement d'un site Web ou d'une appli mobile 16 Juin 2020
Mysql migration utf8->utf8mb4 Développement d'un site Web ou d'une appli mobile 17 Août 2019
recherche lettres dans mysql Développement d'un site Web ou d'une appli mobile 11 Juillet 2019
cache mysql maison Développement d'un site Web ou d'une appli mobile 18 Février 2019
Stocker dans des variables php les fonctions MySql Développement d'un site Web ou d'une appli mobile 2 Février 2019
message : [LEGACY][libmysqlclient] Please consider moving to stable and mysqlnd in Administration d'un site Web 8 Novembre 2018
Connexion à un serveur mysql distant Développement d'un site Web ou d'une appli mobile 21 Octobre 2018
Mysql, modifier des chaines avec différents caractères Administration d'un site Web 13 Septembre 2018