IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

GROUP BY avec ORDER BY et LIMIT ? [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 156
    Par défaut GROUP BY avec ORDER BY et LIMIT ?
    Bonjour à tous,

    Je dispose de la base de données suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ID | Nom  | Ville | Date
    01 | john | paris | 18/05/10
    02 | nico | lyon  | 16/05/10
    03 | nico | paris | 15/05/10
    04 | john | lyon  | 15/05/10
    La date n'est qu'un exemple, pour la compréhension, en fait il s'agit d'un timestamp.


    Je cherche à afficher, a l'aide d'un while le résultat suivant :


    John à paris le 18/05/10
    Nico à Lyon le 16/05/10


    Autrement dit, la dernière ville visitée par personne.

    Merci d'avance pour votre aide

    -Vincent

  2. #2
    Membre chevronné
    Homme Profil pro
    Webmaster
    Inscrit en
    Janvier 2007
    Messages
    489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Janvier 2007
    Messages : 489
    Par défaut
    Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    $marequete = mysql_query("SELECT Nom, Ville, Date FROM tatable ORDER BY Date desc LIMIT 10");
    while ($r= mysql_fetch_row($marequete)) 
    {
    echo $r[0].' à '.$r[1].' le '.$r[2].'<br>';
    }
    ?>

  3. #3
    Membre chevronné
    Homme Profil pro
    Webmaster
    Inscrit en
    Janvier 2007
    Messages
    489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Janvier 2007
    Messages : 489
    Par défaut
    Ops le timestamp :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
    $marequete = mysql_query("SELECT Nom, Ville, Date FROM tatable ORDER BY Date desc LIMIT 10");
    while ($r= mysql_fetch_row($marequete)) 
    {
    $date = date("Y-m-d", $r[2]);
    // et pour le formatage de ta date avec l'année en YY :
    $da=explode("-",$date);
    $year= substr($da[0], 2, 4);
    $date = "$da[2]/$da[1]/$year";
     
    echo $r[0].' à '.$r[1].' le '.$date.'<br>';
    }
    ?>

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 156
    Par défaut
    Merci pour ta réponse !

    Effectivement oui, si je fais ça je vais avoir (selon mon exemple) 4 résultats :

    John à paris le 18/05/10
    Nico à Lyon le 16/05/10
    nico à paris le 15/05/10
    john à lyon le 15/05/10


    Mais ce n'est pas ce que je recherche. Ce n'est pas le format date qui me pose problème mais le tri et le nombre de résultats.

    Je souhaiterais avoir uniquement, par personne, la dernière date de visite d'une ville.

    Par exemple, si john et nico vont toutes les jours dans une ville différente le resultat me donnera que :

    John à paris le 18/05/10
    Nico à Lyon le 16/05/10

  5. #5
    Membre chevronné
    Homme Profil pro
    Webmaster
    Inscrit en
    Janvier 2007
    Messages
    489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Janvier 2007
    Messages : 489
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT Nom, Ville, Date FROM tatable GROUP BY ID ORDER BY Date desc LIMIT ...

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 156
    Par défaut
    Super, alors ça je crois bien que ça fonctionne merci

    Par contre... comment faire pour trier le résultat final ? Par exemple :

    John à paris le 18/05/10
    Nico à Lyon le 16/05/10
    marc à caen le 15/05/10
    eddy à lens le 14/05/10

  7. #7
    Membre chevronné
    Homme Profil pro
    Webmaster
    Inscrit en
    Janvier 2007
    Messages
    489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Janvier 2007
    Messages : 489
    Par défaut
    Suivant quel critère ?
    Là c'est par date décroissante.
    ORDER BY Date desc

  8. #8
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 156
    Par défaut
    Salut,

    Je crois que j'ai un peu de mal à me faire comprendre ! Hihi

    Là, actuellement, avec la solution que tu m'as donné, j'ai bien le nom de la derniere ville que toutes mes personnes ont visité. Ca, ok.

    Avec ceci j'obtiens une liste avec les bonnes données mais je n'arrive pas à la trier cette liste. Que ce soit ASC ou DESC.

  9. #9
    Membre chevronné
    Homme Profil pro
    Webmaster
    Inscrit en
    Janvier 2007
    Messages
    489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Janvier 2007
    Messages : 489
    Par défaut
    Suivant quel critère ?

  10. #10
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 156
    Par défaut
    Niarf

    Le critère c'est la date.

    Obtenir la dernière date de chaque personne ET trier ces personnes en fonction de la date

    La actuellement, avec le


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT Nom, Ville, Date FROM tatable GROUP BY ID ORDER BY Date desc LIMIT 10

    J'obtiens les bonnes données. Mais lors de mon While, la liste ne s'affiche pas dans l'ordre que je souhaite. C'est à dire par date DESC.

  11. #11
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 156
    Par défaut
    Bon et bien je me suis débrouillé tout seul comme un grand garçon

    Pour ceux qui auront le même problème voilà comment j'ai fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT * FROM 
    (SELECT * FROM table ORDER BY date DESC) AS table
    GROUP BY table.nom ORDER BY table.date DESC LIMIT 10;

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL-5.1] Requete très lente avec Order By et Limit
    Par dimainfo dans le forum Requêtes
    Réponses: 10
    Dernier message: 18/07/2013, 14h48
  2. JOIN ON avec ORDER et LIMIT
    Par xxkirastarothxx dans le forum Requêtes
    Réponses: 4
    Dernier message: 21/12/2009, 18h28
  3. Problème avec ORDER BY et GROUP BY
    Par palmafrique dans le forum Requêtes
    Réponses: 12
    Dernier message: 26/10/2009, 13h41
  4. Problème avec ORDER BY et LIMIT
    Par lex_22 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 21/07/2008, 20h03
  5. [SQL] count & group avec order étrange ?
    Par rduvrac dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 28/04/2008, 02h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo