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

  FORUM HardWare.fr
  Programmation
  PHP

  [mysql] comment faire ce classement ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[mysql] comment faire ce classement ?

n°344691
monsieur t​omate
Posté le 27-03-2003 à 00:25:56  profilanswer
 

Ne vous inquiétez pas, je vais pas vous sortir le coup du : "comment on fait pour classer par ordre croissant"  :lol:  
 
Voila, alors ds ma table, g des données :
excellent, bien, moyen, pas terrible, nul
 
je voudrais faire un tri qui serait une moyenne pondérée de ces 5 champs, avec le minimum de requetes mysql possible (vu kil y a 600 jeux ds la table, ça vaudrait mieux).


---------------
HardGamers.org
mood
Publicité
Posté le 27-03-2003 à 00:25:56  profilanswer
 

n°344895
monsieur t​omate
Posté le 27-03-2003 à 10:30:26  profilanswer
 

up !


---------------
HardGamers.org
n°344948
monsieur t​omate
Posté le 27-03-2003 à 10:57:39  profilanswer
 

à force de bidouillages, g réussi à faire ça :

Code :
  1. select ID, IFNULL((5*excellent+4*bien+3*moyen+2*pasterrible+nul)/(15*(excellent+bien+moyen+pasterrible+nul)),0) AS score FROM beta_tests ORDER BY score DESC


ca va, ou c nul ? ^^


---------------
HardGamers.org
n°345820
stef_dober​mann
Personne n'est parfait ...
Posté le 27-03-2003 à 18:27:53  profilanswer
 

salut :hello:
 
Tu a les 5 valeurs, je voi pas à koi le ID va servir :??:
 
une question plus stupide, c koi une moyenne pondérée !
une moyenne je c, mais pondérée :??:


---------------
Tout à commencé par un rêve...
n°345888
monsieur t​omate
Posté le 27-03-2003 à 19:59:07  profilanswer
 

ben qd elle est pondérée, tu y mets des coefficients (comme à l'école ^^)
 
l'ID me sert pour pouvoir avoir une autre info qu'une bete suite de chiffres...


Message édité par monsieur tomate le 27-03-2003 à 19:59:33

---------------
HardGamers.org
n°345891
mrbebert
Posté le 27-03-2003 à 20:12:01  profilanswer
 

Monsieur Tomate a écrit :

à force de bidouillages, g réussi à faire ça :

Code :
  1. select ID, IFNULL((5*excellent+4*bien+3*moyen+2*pasterrible+nul)/(15*(excellent+bien+moyen+pasterrible+nul)),0) AS score FROM beta_tests ORDER BY score DESC


ca va, ou c nul ? ^^

Si tu veux, pour chaque ligne, la moyenne pondérée de ces 5 colonnes, c'est bon :)  
 
Elles contiennent quoi ces colonnes :??:

n°345892
monsieur t​omate
Posté le 27-03-2003 à 20:14:28  profilanswer
 

elles contiennent le nbre de fois ke les gens ont cliké sur excellent, moyen, etc.
mais la formule est peut-etre buggée, je l'ai pas encore essayée sérieusement, mais du moment ke ça met en valeur les bons jeux par rapport aux mauvais...


---------------
HardGamers.org
n°345894
MagicBuzz
Posté le 27-03-2003 à 20:15:49  profilanswer
 

Avec MySQL, je sais pas, mais avec Orcale, il y a une fonction DECODE. Il y a certainement un équivalent.
 
Utilisation du DECODE :
 
 
SELECT ID, SCORE
FROM BETA_TESTS
ORDER BY DECODE(SCORE, 'excellent', 5, 'bien', 4, 'moyen', 3, 'pas terrible', 2, 'nul', 1) DESC
 
En fait, DECODE prends un nombre illimité de paramètres.
Le premier est le nom du champs (ou variable, fonction, etc.) à tester. Ensuite, les paramètres vont par doublons, le permier étant la valeur recherchée et le second la valeur de substitution.
S'il y a un dernier paramètre qui n'est pas en binôme, alors il est utilisé comme valeur par défaut, sinon, c'est la valeur du champ qui est conservée.
 
Avec MS SQL Server, il me semble que l'équivalent est "CASE".

n°345899
monsieur t​omate
Posté le 27-03-2003 à 20:20:05  profilanswer
 

hum... je me demande si ça va marcher, car excellent, moyen, etc. ne sont pas des valeurs, mais des noms de colonne... les valeurs, c des INT (le nbre de fois kun lecteur a choisi une de ces options)


---------------
HardGamers.org
n°345903
mrbebert
Posté le 27-03-2003 à 20:21:59  profilanswer
 

Monsieur Tomate a écrit :

elles contiennent le nbre de fois ke les gens ont cliké sur excellent, moyen, etc.
mais la formule est peut-etre buggée, je l'ai pas encore essayée sérieusement, mais du moment ke ça met en valeur les bons jeux par rapport aux mauvais...

Ah d'accord :)  
Si, ca me parait bien comme requête :)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [mysql] comment faire ce classement ?

 

Sujets relatifs
Variable et requete Mysqljointures mysql
mysql : quelques questionscomment on copie une table dans une autre en Mysql
Gérer les droits Mysql via phpmyadmin[perl] perl avec mySQL ??
[PHP / mySQL] Problème de création d'une table[mySQL] Grouper plusieurs champs en un champs ?
[mysql] Joindre des tables [résolu][PHP/MySQL ] Classement par lettre
Plus de sujets relatifs à : [mysql] comment faire ce classement ?


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