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 :

Afficher dernier enregistrement avec GROUP BY [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Homme Profil pro
    Webmaster
    Inscrit en
    Décembre 2013
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2013
    Messages : 84
    Par défaut Afficher dernier enregistrement avec GROUP BY
    Bonjour à tous !

    J'ai fait pas mal de recherche, mais impossible d'y arriver par mon manque de connaissance, alors je fait appel à votre bonté pour me filer un petit coup de main.

    J'ai une messagerie privée et j'aimerais les grouper par utilisateur, mais le soucis avec GROUP BY c'est qu'il m'affiche pas le dernier message quand je l'utilise alors que j'aimerais qu'il m'affiche le dernier message du group.

    Voila mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM messages WHERE recu='.$user->id.' GROUP BY envoi ORDER BY date_message DESC
    A ce que j'ai pu lire il faut ajouter un "joint" mais cela fait 3 heures que j'essaie et impossible...

    Quelqu'un peux me dire ce qu'il faut ajouter pour que les messages se group par "envoi" et affiche le dernier message par "date_message" la plus récente.

    Merci merci merci

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    GROUP BY s'utilise avec des fonctions d'aggrégations comme COUNT, SUM, MAX etc.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT colonneA, colonneB FROM messages m
    JOIN (
       SELECT MAX(date_message) as date_message, envoi FROM messages max
       WHERE m1.recu='.$user->id.' 
       GROUP BY envoi
    ) ON max.date_message = m.date_message AND max.envoi = m.envoi
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre confirmé
    Homme Profil pro
    Webmaster
    Inscrit en
    Décembre 2013
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2013
    Messages : 84
    Par défaut
    Merci pour ta réponse, j'ai essayer ceci mais j'ai une erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $req2=$pdo->query('SELECT * FROM messages m JOIN (SELECT MAX(date_message) as date_message, envoi FROM messages max WHERE m1.recu='.$user->id.' GROUP BY envoi) ON max.date_message = m.date_message AND max.envoi = m.envoi');
    Mon erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1248 Every derived table must have its own alias' in /home/www/vhosts/monsite.com/httpdocs/messagerie.php:108 Stack trace: #0 /home/www/vhosts/monsite.com/httpdocs/messagerie.php(108): PDO->query('SELECT * FROM m...') #1 {main} thrown in
    Merci merci

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    j'ai oublié de mettre un alias :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT colonneA, colonneB FROM messages m
    JOIN (
       SELECT MAX(date_message) as date_message, envoi FROM messages m2
       WHERE m2.recu='.$user->id.' 
       GROUP BY envoi
    ) max ON max.date_message = m.date_message AND max.envoi = m.envoi
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre confirmé
    Homme Profil pro
    Webmaster
    Inscrit en
    Décembre 2013
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2013
    Messages : 84
    Par défaut
    Super super merciiiii !!!

    Si tu passe en Normandie je t'offre le champagne !

    Dernière question, j'ai bien le dernier message du groupe qui s'affiche mais j'aimerais classer par date des groupes, le groupe de message le plus récent en haut de liste, car actuellement c'est pas classé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ORDER BY date_message DESC
    J'ai essayer de le placer à la fin = erreur, et à le suite de group by = erreur

    Merci encore !

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ORDER BY m.date_message DESC
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre confirmé
    Homme Profil pro
    Webmaster
    Inscrit en
    Décembre 2013
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2013
    Messages : 84
    Par défaut
    Merciiiii beaucoup !

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 06/03/2010, 23h36
  2. afficher dernier enregistrement
    Par Hombe dans le forum IHM
    Réponses: 5
    Dernier message: 12/01/2009, 11h31
  3. [A-07] Afficher dernier enregistrement
    Par AlainL dans le forum VBA Access
    Réponses: 7
    Dernier message: 21/12/2008, 08h06
  4. Afficher dernier enregistrement selon ID
    Par Passarinho44 dans le forum Langage SQL
    Réponses: 8
    Dernier message: 29/07/2008, 11h45
  5. dernier enregistrement par group by
    Par startout dans le forum Langage SQL
    Réponses: 8
    Dernier message: 03/07/2006, 16h05

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