captain_torche Posté 14 Janvier 2015 Partager Posté 14 Janvier 2015 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Message populaire. Portekoi Posté 14 Janvier 2015 Message populaire. Partager Posté 14 Janvier 2015 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 1 Lien vers le commentaire Partager sur d’autres sites More sharing options...
captain_torche Posté 14 Janvier 2015 Auteur Partager Posté 14 Janvier 2015 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 ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Portekoi Posté 14 Janvier 2015 Partager Posté 14 Janvier 2015 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()" Lien vers le commentaire Partager sur d’autres sites More sharing options...
captain_torche Posté 14 Janvier 2015 Auteur Partager Posté 14 Janvier 2015 Ha non, pas de SUM, vu que je cherche à obtenir le score de chaque ligne. Encore merci, en tout cas ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant