Aller au contenu

Sujets conseillés

Posté

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

Posté

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 ?


Posté

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()" ^^

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...