[mysql] comment faire ce classement ?

comment faire ce classement ? [mysql] - PHP - Programmation

Marsh Posté le 27-03-2003 à 00:25:56    

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
Reply

Marsh Posté le 27-03-2003 à 00:25:56   

Reply

Marsh Posté le 27-03-2003 à 10:30:26    

up !


---------------
HardGamers.org
Reply

Marsh Posté le 27-03-2003 à 10:57:39    

à 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
Reply

Marsh Posté le 27-03-2003 à 18:27:53    

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...
Reply

Marsh Posté le 27-03-2003 à 19:59:07    

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
Reply

Marsh Posté le 27-03-2003 à 20:12:01    

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 :??:

Reply

Marsh Posté le 27-03-2003 à 20:14:28    

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
Reply

Marsh Posté le 27-03-2003 à 20:15:49    

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".

Reply

Marsh Posté le 27-03-2003 à 20:20:05    

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
Reply

Marsh Posté le 27-03-2003 à 20:21:59    

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 :)

Reply

Sujets relatifs:

Leave a Replay

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