[resolu]Jointure d'un COUNT dans une requête

Jointure d'un COUNT dans une requête [resolu] - SQL/NoSQL - Programmation

Marsh Posté le 03-06-2007 à 12:49:30    

Salut à tous.
 
J'ai fait une requête qui sélectionne quelques informations sur les membres (ancienneté, pseudo, id..). J'aimerais y intégrer le nombre de vidéos qu'ils ont posté, sachant qu'on peut le déterminer en comptant le nombre d'occurences de la table video dans lesquelles l'UID est égal à celui du membre [:angelusdeus].
 
J'ai donc commencé doucement, en tapant ceci:

Code :
  1. $query = mysql_query("SELECT signup.UID,signup.username,signup.addtime FROM signup ORDER BY UID" );
  2. while($row = mysql_fetch_array($query))
  3. {
  4. simplify($row,'');
  5. $query2 = mysql_query("SELECT COUNT(*) AS videos FROM video WHERE UID=" . $UID . "" );
  6. $nb = mysql_fetch_array($query2);
  7. $nb_videos = $nb['videos'];
  8. $old = floor((time()-$addtime)/(3600*24));
  9. echo $username . ' - Inscrit depuis ' . $old . ' jours - ' . $nb_videos . ' vidéos <br />';
  10. }


 
Tout va bien sauf que comme vous l'aurez compris, une requête est éxécutée pour chaque membre... Et étant donné que la BDD s'agrandit de jours en jours, le serveur va pas aimer [:delarue5].
J'ai donc cherché à intégrer mon COUNT dans la première requête par le biais d'une jointure, mais je ne vois pas trop comment faire, et les problèmes semblables cherchés sur Google ne sont pas concluants.
 
Merci d'avance et bonne après-midi.


Message édité par Zorro561 le 03-06-2007 à 14:55:33
Reply

Marsh Posté le 03-06-2007 à 12:49:30   

Reply

Marsh Posté le 03-06-2007 à 13:45:22    

SELECT signup.UID,signup.username,signup.addtime, COUNT(video.UID) AS nb_videos
FROM signup
LEFT JOIN video ON signup.UID=video.UID
GROUP BY signup.UID
ORDER BY signup.UID
 
 
A voir si ca marche bien pour les membres qui n'ont pas posté de vidéo (nb_videos pourrait être à NULL au lieu de 0) [:figti]


Message édité par mrbebert le 03-06-2007 à 14:20:25
Reply

Marsh Posté le 03-06-2007 à 13:57:16    

Hum non ça bugue, la requête semble fausse. Par contre le COUNT là, il compte le nombre de vidéos au total non ?

Reply

Marsh Posté le 03-06-2007 à 14:21:15    

Avec un GROUP BY, ca devrait mieux aller :o

Reply

Marsh Posté le 03-06-2007 à 14:55:21    

Nickel, merci beaucoup mec, faudra que je bosse les jointures/groupements SQL quand j'aurai le temps.

Reply

Sujets relatifs:

Leave a Replay

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