Grosse requête pour un forum [Résolu]

Messages postés
19
Date d'inscription
samedi 2 décembre 2000
Dernière intervention
27 juillet 2008
- - Dernière réponse : nicomilville
Messages postés
3498
Date d'inscription
lundi 16 juillet 2007
Dernière intervention
28 février 2014
- 5 juil. 2008 à 07:43
Bonjour,

J'ai besoin d'un petit peu d'aide pour réussir à coder une requête particulièrement complexe :

J'ai trois tables dans ma base de données : forums(id, titre, description), topics(forumid, id, titre, description) et posts(topicid, id, message, auteur, date). J'espère que vous comprenez la structure de ces tables, je n'ai pas trouvé comment faire un tableau.

Le problème est le suivant : est-il possible, en une seule requête, quand on liste tous les forums, d'obtenir le nombre de topics qu'il contient, le nombre total de posts qu'il contient, et la date du dernier post (et éventuellement son auteur).

Je sais qu'en mettant des champs nbr_topics, nbr_posts, date_dernier_post dans la table forum, le problème serait résolu, mais ce serait une requête en plus par message posté, en en écriture en plus (et comme il risque d'y avoir beaucoup de monde sur le forum, c'est dangereux pour l'intégrité des données).

Je vous remercie d'avance pour votre aide, et vous souhaite une bonne fin d'après midi.
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
Messages postés
19
Date d'inscription
samedi 2 décembre 2000
Dernière intervention
27 juillet 2008
3
Merci
Bonjour,

J'ai finalement trouvé !

Voici la bête (c'était tout simple en fait) :

SELECT forum.id AS id, forum.titre AS titre, COUNT(DISTINCT topics.id) AS nbr_topics, COUNT(post.id) AS nbr_post
FROM forum
LEFT JOIN topics ON topics.parentid = forum.id
LEFT JOIN post ON post.parentid = topics.id
GROUP BY forum.id;

Je remercie tous ceux qui ont essayés de m'aidé, même sans poster.

A plus.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 100 internautes ce mois-ci

Commenter la réponse de steckdenis
Messages postés
3498
Date d'inscription
lundi 16 juillet 2007
Dernière intervention
28 février 2014
0
Merci
Salut,

Met ta réponse en réponse acceptée !

De rien, lol !

a++

Si la réponse vous convient, pensez : Réponse acceptée !
Commenter la réponse de nicomilville

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.