Requete SQL : double tri un peu complexe

Nouveau WRInaute
Bonjour,

J'ai une table avec des commentaires d'utilisateurs, et j'aimerai restituer les commentaires tries par id decroissant (les derniers en premier), mais groupes par auteur (et c'est la que le bat blesse)
exemple si j'ai 4 commentaires (ici dans l'ordre d'ajout dans la base):
commentaire1 membre1
commentaire2 membre2
commentaire3 membre1
commentaire4 membre2

il me faut l'afficher suivant un thread par membre :
Membre2
  • commentaire4
(puisque ce commentaire est le tout dernier entre)
  • commentaire2

Membre1
  • commentaire3
  • commentaire1

je n'arrive pas a trouver une solution évidente...

quelqu'un a déjà code quelquechose de similaire?

Merci pour toute aide ou commentaire!
 
WRInaute passionné
en une requete ca me semble difficile car il faut récupérer le dernier message de chaque membre pour déterminer l'ordre des membres puis lister les messages de chaque membre.

une requete pour récupérer l'ordre des membres :
Code:
SELECT MAX( id ), membre FROM table_commentaire GROUP BY membre ORDER BY id DESC

pour chaque membre de la requete précédente il faut lister les messages avec :
Code:
SELECT commentaire FROM table_commentaire WHERE membre = '$membre' ORDER BY id DESC
 
WRInaute discret
Exactement !

Tu fais :

SELECT membre_id, commentaire_id from table_commentaire ordre by membre_id desc, commentaire_id desc

Tu vas donc selectionner toutes les commentaires en table, triés par
Membre décroissant
-membre4
-membre3
-membre2

et commentaires décroissants :
-membre4 commentaire3
-membre4 commentaire2
-membre3 commentaire5
-membre3 commentaire1
etc...

Maintenant si en plus tu veux tes informations sur les membres en une seule requete.

SELECT table1.membre_informations, table2.commentaire_informations FROM table_membre table1 left join table_commentaires table2 on table1.id = table2.membre_id ORDER BY table2.membre_id DESC, table2.commentaire_id DESC
 
Discussions similaires
Haut