Aller au contenu

formule de calcul classement mysql [resolu]


jer666

Messages recommandés

bonjour,

j'ai un projet qui me trotte depuis un bail maintenant, et pour le réaliser j'aurais besoin de comprendre comment ordonner les résultats d'une requette selon une formule de calcul.

En clair:

imaginons une table nommée article

avec comme champs

id

titre

contenu

vote (1seule vote possible, on vote positif si on aime, si on aime pas on vote pas :))

date (de publication)

lecture

imaginons maintenant que j'attribu une note au champs vote, date et lecture.

par exemple

admettons

Qu'un vote equivaut a 1 point.

Qu'un article du jours equivaut a 50 point et qu'il regresse de 15 point par jours

Que 500 lectures equivaut a 1 point

comment former ma requette mysql dans mon script en php pour ordonner mes articles du plus gros nombre de point vers le plus bas?

en fait c'est une sorte de systeme a la digg ou scoopeo que je cherche a réaliser :)

si vous avez une explication, un tuto en francais? je suis preneur :transpi: merci par avance :fumer:

j'ai cherché mais comme je connais pas les bons termes c'est asp evident :eeek:

Lien vers le commentaire
Partager sur d’autres sites

Deux posibilités :

- Ajouter une colonne à ta table, pour contenir le score, qui serait actualisée régulièrement (au moins une fois par jour pour les -15pts, et à chaque vote). Ta requête serait ensuite super simple.

- Requêter une procédure stockée qui calculerait le score à la volée

Par contre, une unique requête qui calculerait tout ça sans rien stocker en base me paraît impossible.

Lien vers le commentaire
Partager sur d’autres sites

Je pensais que tu pourrais développer une procédure stockée sur ta base (une sorte de fonction de calcul et de requêtage, hébergée par ta base), qui calculerait dynamiquement le score, et l'appeler au lieu d'effectuer une requête normale.

Oracle le permet, PostgreSQL aussi, mais je ne sais pas si mySQL dispose de cette fonction.

Lien vers le commentaire
Partager sur d’autres sites

(je n'avais pas vu ta réponse :x , MySQL permet aussi de stocker des procédures, pour info)

Oui, une colonne dédié sera plus rapide, forcément :) ; juste un léger souci il me semble, le score est calculé en fonction de la date, résultat tu dois mettre à jour ton score à minuit. A ma connaissance, on ne peux pas déclencher de procédure à un instant donnée, directement dans MySQL (je ne pense pas non plus dans les autres :yes: ), donc tu dois avoir recours à une solution tierce dans le cas d'une colonne calculée. Avec la gestion des erreurs qui va avec.

Et vu le calcul dans ce cas là, ça prend pas énormément de ressource :)

Après, chacun vois midi à sa porte :roll:

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...