Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Requêtes
Requêtes Forum d'entraide sur les requêtes MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/03/2011, 11h12   #1
Invité de passage
 
Inscription : août 2008
Messages : 8
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 8
Points : 0
Points : 0
Par défaut LEFT OUTER JOIN liste de sujets et dernier commentaire

Bonjour,

je suis en train de créer un forum très simple (discussions, et pour chaque fil de discussions des commentaires)
je souhaite afficher une liste des fils de discussions triés par date descendante, et spécifier le nb de commentaires et le dernier commentaire déposé par ......... le ...........

j'ai deux tables simples Mysql

DISCUSSIONS
id_sujet - nom - message - date_discussion

COMMENTAIRES
id_commentaire - id_sujet - message - date_commentaire - id_user

j'ai cette requete :

Code :
1
2
3
4
5
6
SELECT SQL_NO_CACHE d.*,c.date_commentaire AS lastcomdate,c.id_user AS lastcomuser,COUNT(c.id_commentaire) AS nbcommentaires 
FROM discussions d		
LEFT OUTER JOIN  `commentaires` c ON  d.id_sujet=c.id_sujet
WHERE  
GROUP BY d.id_sujet
ORDER BY d.date_discussion DESC
LE PROBLÈME:
cela marche bien, sauf que le lastcomdate et lastcomuser donne les infos du premier commentaire déposé et pas le dernier.
Y aurait il une clause à rajouter pour que ces infos soient prises pour le dernier commentaire ? (date_commentaire DESC )
j'ai essayé en rajoutant un ORDER BY c.date_commentaire DESC, mais cela ne marche pas.

Merci d'avance pour votre aide.
ekael est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2011, 11h17   #2
Membre Expert
 
Avatar de Madfrix
 
Inscription : juin 2007
Messages : 2 278
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : juin 2007
Messages : 2 278
Points : 2 324
Points : 2 324
Bonjour,

MySQL ne possède pas contrairement à PostGreSQL par exemple de fonction de fenêtrage qui te seraient utiles dans ce cas de figure. Tu es condamné à trier en DESC tes données au préalable dans une sous requête afin d'obtenir ce que tu souhaites
__________________
Je ne réponds pas aux questions envoyées par mp
Madfrix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2011, 13h12   #3
Futur Membre du Club
 
Damien
Inscription : juillet 2009
Messages : 50
Détails du profil
Informations personnelles :
Nom : Damien

Informations forums :
Inscription : juillet 2009
Messages : 50
Points : 16
Points : 16
Ca rejoint le problème que j'ai posé dans un post il y a un ou deux jours ; la seule méthode la plus efficace que j'ai trouvé, serait (dans ton cas) d'ajouter une colonne 'last_id_commentaire' dans la table 'discussions'. Ca permet de faire un JOIN dessus... (J'imagine que tu dois aussi récupérer les infos de l'utilisateurs dans une autre table)

Ca ne fait qu'une requête de plus à l'insertion
WibiMaster est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h38.


 
 
 
 
Partenaires

Hébergement Web