[SQL] Requête pour gestion d'un forum

Requête pour gestion d'un forum [SQL] - SQL/NoSQL - Programmation

Marsh Posté le 09-02-2006 à 10:55:16    

Bonjour,
 
je suis en train de créer un forum en PHP, et j'ai la nécessité d'utiliser une requête pour extraire diverses informations de ma BDD.
 
Voici dejà la structure de ma table 'forum' (je vous passe les informations inutiles dans cette question):
 
*************
int id; (clef primaire, en auto_increment)
int id_rep;
text titre;
text message;
...
int id_auteur; (linké avec une table users pour récuperer le nom
*************
 
Actuellement, j'ai fait une requête permettant d'extraire simplement des infos comme l'id, le nom de l'auteur... etc:
> SELECT forum.titre, forum.date, forum.id, users.nom FROM forum INNER JOIN users ON forum.id_auteur = users.id;
 
Cependant j'aurai besoin d'une autre information: le nombre de réponses associées à un sujet.
Je m'explique: dans la table forum, le champ id_rep est égal à 0 si l'entrée est un sujet, sinon il contient l'id du sujet auquel il se rapporte.
Exemple:
id | titre | id_rep
1     A        0
2     B        1
3     C        0
4     D        3
5     E        3
 
-> signifie qu'il y a 2 sujets (A et C), avec A possédant 1 reponse et C possédant 2 réponses.
 
Donc voici ma question: que dois-je rajouter dans ma requete afin d'avoir le nombre de reponses (COUNT) pour chacun des sujets ?
exemple:
id | titre | COUNT(id_rep)
1     A        1
3     C        2
 

Reply

Marsh Posté le 09-02-2006 à 10:55:16   

Reply

Marsh Posté le 09-02-2006 à 11:11:25    

slt
essaie un truc du genre :
 
select count(id_rep),*  
from table
group by titre ;
 
 
tu me tiens au courant..

Reply

Marsh Posté le 09-02-2006 à 11:27:28    

Si j'ai tout compris à la structure de ta table:

Code :
  1. SELECT
  2. forum.titre,
  3. forum.date,
  4. forum.id,
  5. users.nom,
  6. count(reponse.id_rep)
  7. FROM
  8.  forum
  9. INNER JOIN  users ON forum.id_auteur = users.id
  10. LEFT OUTER JOIN forum as reponse on ( forum.id = reponse.id_rep)
  11. GROUP BY
  12. forum.titre,
  13. forum.date,
  14. forum.id,
  15. users.nom,
  16. ;


 
 

shreck a écrit :

slt
essaie un truc du genre :
select count(id_rep),* from table group by titre ;
tu me tiens au courant..


 [:pingouino]  

Reply

Marsh Posté le 09-02-2006 à 11:39:53    

euh... merci shreck. Mais c'est pas trop ça :)

Reply

Marsh Posté le 09-02-2006 à 11:44:06    

Merci anapajari,
 
j'ai testé ta requête sous access, et il me met:
erreur de syntaxe (opérateur absent) dans l'expression 'forum.id_auteur = users.id LEFT OUTER JOIN  forum as reponse on (forum.id = reponse.id_rep)'.
 
jvais encore faire des recherches de mon côté (sur ta requête entre autre)

Reply

Marsh Posté le 09-02-2006 à 20:25:44    

re Merci anapajari !!!!
en fait, la requete voulait pas s'executer sous access. Mais dans du PHP avec mysql, ca passe nickel !
 
Merci encore pour ta réponse ^^

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed