Jump to content
captain_torche

Du scoring multi colonnes

Rate this topic

Recommended Posts

Salut à tous !


On est en train d'essayer de proposer des résultats alternatifs, et on est partis sur un maillage de requêtes assez complexe et barbare.



Je me demandais s'il n'y avait pas moyen de générer un score par ligne de résultat, basé sur plusieurs colonnes ?



J'ai déjà tenté ceci sur une seule colonne, mais je ne vois pas comment le faire de manière cumulative (Plusieurs colonnes peuvent matcher et augmenter le score de l'enregistrement)



SELECT id, param1, param2, param3,
IF(param1 = 1, 10, 0) AS score
FROM matable

Share this post


Link to post
Share on other sites

Bonjour,



Comme ceci ?



select sum(score_1) + sum(score_2) + sum(score_3) from (
Select
Case when param1 = 'valeur' then 1 else 0 end as score_1,
Case when param2 = 'valeur' then 1 else 0 end as score_2,
Case when param3 = 'valeur' then 1 else 0 end as score_3
From ma_table ) as tt

Portekoi


  • Upvote 1

Share this post


Link to post
Share on other sites

Portekoi, tu GERES !



J'avais trouvé autre chose (via stackoverflow), mais bcp moins performant sur une grande BDD :



SELECT id, param1, param2,
@s1:=IF(param1 = 1, 10, 0) AS score_1,
@s2:=IF(param2 = 1, 20, 0) AS score_2,
@s1+@s2 AS score
FROM matable ORDER BY id DESC LIMIT 10

Edit : le CASE WHEN est plus rapide que le IF, ou c'est une préférence personnelle ?


Share this post


Link to post
Share on other sites

Je préfère le CASE When. Niveau exécution, à ma connaissance, pas de différence. :)


J'ai édité ma réponse pour ajouter les "sum()" ^^

Share this post


Link to post
Share on other sites

Ha non, pas de SUM, vu que je cherche à obtenir le score de chaque ligne.


Encore merci, en tout cas !


Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...