Requete SQL : double tri un peu complexe

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics

ndavoust
Nouveau WRInaute
 
Messages: 38
Inscription: Mar Nov 28, 2006 21:14

Requete SQL : double tri un peu complexe

Message le Mar Jan 29, 2008 21:15

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!


webmasterlamogere
WRInaute accro
WRInaute accro
 
Messages: 1874
Inscription: Dim Déc 17, 2006 21:08

Message le Mer Jan 30, 2008 8:40

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: Tout sélectionner
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: Tout sélectionner
SELECT commentaire FROM table_commentaire WHERE membre = '$membre' ORDER BY id DESC


blman
WRInaute accro
WRInaute accro
 
Messages: 2915
Inscription: Ven Sep 05, 2003 10:46

Message le Mer Jan 30, 2008 9:55

En une requete :

Code: Tout sélectionner
ORDER BY membre_id DESC, commentaire_id DESC


un truc dans ce genre là :wink: (ou l'inverse, je sais plus). Rien de complexe la dedans :mrgreen:

http://dev.mysql.com/doc/refman/5.0/fr/ ... ation.html


Sacha | Bankexam.fr
WRInaute discret
WRInaute discret
 
Messages: 93
Inscription: Lun Juin 18, 2007 15:09

Message le Mer Jan 30, 2008 14:33

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


Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités