Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2452 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [SQL] Classement programmeurs

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[SQL] Classement programmeurs

n°1636082
ti-bank
ti-bank.fr
Posté le 03-11-2007 à 16:14:16  profilanswer
 

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
mood
Publicité
Posté le 03-11-2007 à 16:14:16  profilanswer
 

n°1636097
weed
Posté le 03-11-2007 à 17:11:33  profilanswer
 

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
n°1636118
ti-bank
ti-bank.fr
Posté le 03-11-2007 à 18:34:34  profilanswer
 

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
n°1636123
ti-bank
ti-bank.fr
Posté le 03-11-2007 à 18:47:52  profilanswer
 

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
n°1636131
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 03-11-2007 à 19:06:29  profilanswer
 

MySQL n'est pas un langage, mais un SGBD

n°1636134
KangOl
Profil : pointeur
Posté le 03-11-2007 à 19:12:41  profilanswer
 

Harkonnen a écrit :

MySQL n'est pas un langage, mais un SGBD


ha bon ? [:a_bon]

n°1636171
weed
Posté le 03-11-2007 à 20:59:39  profilanswer
 

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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [SQL] Classement programmeurs

 

Sujets relatifs
Synchro Excel/Sqlproblème dans un bloc PL/SQL[RESOLU]
Probleme legal copie SQL (Haut importance)Les variables sont-elles stockées dans la base dans MS SQL Server ?
[SQL] message d'erreur qui n'a pa lieu d'être[RESOLU]Site chez Free - Base SQL distante
erreur langage SQLDTS SQL Server 2000
[SQL,ORACLE]Message d'erreur mutating, trigger....(RESOLU)[SQL] Optimisation d'une réquète récursive
Plus de sujets relatifs à : [SQL] Classement programmeurs


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR