[SQL] Classement programmeurs

Classement programmeurs [SQL] - SQL/NoSQL - Programmation

Marsh Posté le 03-11-2007 à 16:14:16    

J'aimerai classer les programmeurs de mes programmes que je propose en téléchargement sur mon site :
ceux qui ont la meilleure moyenne de leurs programmes notés.
 
Donc faut que je ratisse chaque programme pour chaque programmeur, que je fasse la moyenne pour chaucun puis que je classe.
 
Ma base s'appelle 'archives'.
 
Le champ 'auteur' précise le nom du programmeur.
 
Le champ 'notem' précise la note du programme.
 
Pouvez-vous me guider ? merci


Message édité par ti-bank le 03-11-2007 à 18:35:03

---------------
Tous vos programmes & cours pour calculatrices TI : www.ti-bank.fr
Reply

Marsh Posté le 03-11-2007 à 16:14:16   

Reply

Marsh Posté le 03-11-2007 à 17:11:33    

et bien je ferais une table qui enregistrerait les renseignements des programmeurs référencé :  
Programmeur avec comme champs prgrammeur_id (clé primaire), nom, prenom (ou pseudo), email
 
Et une autre table stats avec comme champs  
stats_id (clé primaire), programmeur_id, date_du_vote, ip_du_vorant
 
Donc comme tu l'as surement deviné, chaque programme sur ton site a son programmeur_id spécifique qui correspond à l'auteur de programme.
Tu spécifiera dans ta base de donnée que les champs programmeur_id + ip_du_votant sont unique pour ne pas qu'un internaute puisse voter 2 fois le meme programmeur.
 
Lorsque l'internaute votera, tu insérera :  
l'id du programmeur, l'ip de l'internaute, et sa date de vote.
 
 
Et apres pour faire tes stats, tu fais tout simplement un truc dans le genre  
 

Code :
  1. select programmeur.nom, programmeur.prenom, count(*) as nb_de_votant
  2. from programmeur.programmeur_id
  3.            inner join stats.programmeur_id
  4. group by programmeur_id


Message édité par weed le 03-11-2007 à 17:12:30
Reply

Marsh Posté le 03-11-2007 à 18:34:34    

MErci.
En fait je voudrais le faire en mySQL.
 
Voilà ce que j'ai fait :
 
Mon problème est dans le $tot qui affiche la moyenne des notes des programmes d'un auteur.
J'ai des messages d'erreur.
J'ai mis en rouge les gros doutes.
 
 
$req =reqmysql("SELECT * FROM `archives` WHERE `vote` > 10 AND RIGHT(categorie,3)='68k' ORDER BY `notem` DESC LIMIT 0, 3" );
while ($ligne = mysql_fetch_object($req )) {
 
$tot =reqmysql("SELECT AVG(`notem`) FROM `archives` WHERE `auteur`=`$ligne->auteur`" );
$pouet = mysql_fetch_array($tot);  
$tablo = pathinfo($ligne ->fichier) ;
$ext = $tablo ['extension'] ;
 
$bloc = $bloc ."<a href=\"modules/archives/download.php?id=$ligne ->id\"><img src=\"/images/";
 
if ($ext == "exe" or $ext == "com" or $ext == "bat" or $ext == "msi" ) {
$bloc = $bloc ."star.gif\"";
} elseif ($ext == "rar" or $ext == "zip" ) {
$bloc = $bloc ."star.gif\"";
} else {
$bloc = $bloc ."star.gif\"";
}
 
$bloc = $bloc ." border=\"noborder\" alt=\"archives\" /></a>&nbsp;&nbsp;<a href=\"index.php?mod=archives&amp;ac=voir&amp;id=".$ligne->id."\">".$ligne ->nom."</a> <font color=#ff0172>(".$ligne ->notem."/5) - Moyenne auteur : ".$pouet['tot']."</font><br /><br />" ;


---------------
Tous vos programmes & cours pour calculatrices TI : www.ti-bank.fr
Reply

Marsh Posté le 03-11-2007 à 18:47:52    

en fait je voudrais meme mieux, je voudrais afficher les 5 meilleures mmoyennes lais bon là je teste juste en affichant les moyenens des auteurs des programmes les mieux notés


---------------
Tous vos programmes & cours pour calculatrices TI : www.ti-bank.fr
Reply

Marsh Posté le 03-11-2007 à 19:06:29    

MySQL n'est pas un langage, mais un SGBD

Reply

Marsh Posté le 03-11-2007 à 19:12:41    

Harkonnen a écrit :

MySQL n'est pas un langage, mais un SGBD


ha bon ? [:a_bon]

Reply

Marsh Posté le 03-11-2007 à 20:59:39    

ti-bank a écrit :

MErci.
En fait je voudrais le faire en mySQL.


Et donc ?  
Ce n'est pas bon ce que je t'ai dis ?  
J'ai donné pour le moment aucune spécificité à un serveur de base de donnée. Idéallement c'est d'etre le plus standard possible.  
 

ti-bank a écrit :


Voilà ce que j'ai fait :
 
$req =reqmysql("SELECT * FROM `archives` WHERE `vote` > 10 AND RIGHT(categorie,3)='68k' ORDER BY `notem` DESC LIMIT 0, 3" );
 
Mon problème est dans le $tot qui affiche la moyenne des notes des programmes d'un auteur.
J'ai des messages d'erreur.
J'ai mis en rouge les gros doutes.


Juste pour info, tu es dans la cat SQL ....  
de plus DESC n'est pas tres beau .... tu devrais l'utiliser avec order by, je trouve ca mieux  [:ou_uo]  
=> doc : mysql.com/select
 

ti-bank a écrit :

en fait je voudrais meme mieux, je voudrais afficher les 5 meilleures mmoyennes lais bon là je teste juste en affichant les moyenens des auteurs des programmes les mieux notés


 
Ahh, j'avais pas compris que tu voulais le top 3 des moyennes des notes. Dans ce cas, en effet il suffit de faire un average des notes, de les trier
et de limiter l'affichage à 3 (la par contre ca se spécifique à MySQL  :fou:  à cause de limit qui n'est pas standard  :cry:  )
 
Dans ce cas, je récapitule au niveau des tables :  
table programmeur : champs prgrammeur_id (clé primaire), nom, prenom (ou pseudo), email
table stats : stats_id (clé primaire), programmeur_id, date_du_vote, note, ip_du_vorant  
 
 


select programmeur.nom, programmeur.prenom, avg(note) as note_moyenne
 
from programmeur.programmeur_id
 
    inner join stats.programmeur_id
 
group by programmeur_id
 
order by avg(note) desc
 
limit 3


 
 
 
 
Petit commentaire sur ton code (j'ai utilisé un spoiler pour les couleurs, car elles sont desactivé avec les balises fixe et code) :  
 
 

Spoiler :

$req =reqmysql("SELECT * FROM `archives` WHERE `vote` > 10 AND RIGHT(categorie,3)='68k' ORDER BY `notem` DESC LIMIT 0, 3" );
1./ tres déconseillé d'utiliser RIGHT cela ralentit énormément la requete  
2./ dans ton pb, je ne vois pas que ce vient faire ton vote > 10

while ($ligne = mysql_fetch_object($req )) {
 
$tot =reqmysql("SELECT AVG(`notem`) FROM `archives` WHERE `auteur`=`$ligne->auteur`" );
$pouet = mysql_fetch_array($tot);  
3./ a quoi cela sera d'executer une requete select si ce n'est pas pour récuper les valeurs ? j'ai fais une recherche de pouet dans ton code sur les lignes suiventes, je ne le trouve pas. pourquoi ?
$tablo = pathinfo($ligne ->fichier) ;
$ext = $tablo ['extension'] ;
 
$bloc = $bloc ."<a href=\"modules/archives/download.php?id=$ligne ->id\"><img src=\"/images/";
 
if ($ext == "exe" or $ext == "com" or $ext == "bat" or $ext == "msi" ) {
$bloc = $bloc ."star.gif\"";
} elseif ($ext == "rar" or $ext == "zip" ) {
$bloc = $bloc ."star.gif\"";
} else {
$bloc = $bloc ."star.gif\"";
}
 
$bloc = $bloc ." border=\"noborder\" alt=\"archives\" /></a>&nbsp;&nbsp;<a href=\"index.php?mod=archives&amp;ac=voir&amp;id=".$ligne->id."\">".$ligne ->nom."</a> <font color=#ff0172>(".$ligne ->notem."/5) - Moyenne auteur : ".$pouet['tot']."</font><br /><br />" ;


Message édité par weed le 03-11-2007 à 21:01:43
Reply

Sujets relatifs:

Leave a Replay

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