SQL pas tres dur mais je suis nul :)

SQL pas tres dur mais je suis nul :) - SQL/NoSQL - Programmation

Marsh Posté le 12-01-2007 à 23:53:26    

Bonjour a tous, voila, peu calé en SQL pr les requetes un peu complexes... je bloque !
 
En fait j'ai ces 3 tables :
 
Jeu [ID, NOMJEU,...] (bcp d'entrees)
Topics [ID, JEU, ...]  
Posts [ID, TOPIC, ...] (5entrees)
 
Voila et comme on peut l'imaginer les jeux sont en fait des forums. DOnc chaque jeu a plusieurs topics qui eux ont plusieurs posts. Et donc en sens inverse : chaque post est dans un topic qui appartient a un jeu.
 
Ce que je veux faire : un "top3" des forums (jeux) avec le + de posts a l'interieur.
 
donc pr le moment j'en suis la :
 

Code :
  1. SELECT Jeux.ID as idjeu, Jeux.NOMJEU as nomdujeu, Posts.ID as idpost FROM Posts,Topics,Jeux WHERE Topics.JEU = Jeux.ID AND Posts.TOPIC = Topics.ID ORDER BY Jeux.ID


 
et ca me donne sous phpmyadmin :
 
idjeu  nomdujeu  idpost  
 
8      nomjeu8      4  
8      nomjeu8      1  
16    nomjeu16     2  
16    nomjeu16     3  
16    nomjeu16     5
 
 
il me reste donc a compter le nbre de posts par topic... qqun pourrait m'aider ? en faisant select count(....), attribut ca lui plait pas au niveau des types ('mixed' ?) ... Voila, au total, j'aimerai avoir IDjeu, Nomjeu, Nbposts ordonné selon le nombre de posts.
 
PS :
Le resultat que j'aimerais avoir est :
 
idjeu  nomdujeu  NBRE POSTS
 
16     nomjeu16     3  
8      nomjeu8      2  

Reply

Marsh Posté le 12-01-2007 à 23:53:26   

Reply

Marsh Posté le 13-01-2007 à 00:44:42    

Bon, d'solé, j'ai trouvé seul :)
 

Code :
  1. SELECT Jeux.ID as idjeu, Jeux.NOMJEU as nomdujeu, COUNT(Posts.ID) as nbpost FROM Posts,Topics,Jeux
  2. WHERE Posts.ACTIF = 1 AND Topics.JEU = Jeux.ID AND Posts.TOPIC = Topics.ID GROUP BY Jeux.ID ORDER BY nbpost DESC LIMIT 0,3


 
Le probleme residait sur le count : pour selecter un count et un attribut en meme temps, il faut mettre un group by... puis en tatonnant, j'ai fait marcher le tout merci quand meme :)


Message édité par cfmreggae le 13-01-2007 à 00:44:58
Reply

Sujets relatifs:

Leave a Replay

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