Petite requête SQL afin de calculer un score, please help ! :)

Fermé
matmat8888 Messages postés 33 Date d'inscription lundi 22 mai 2017 Statut Membre Dernière intervention 12 mars 2019 - 12 mars 2019 à 23:16
matmat8888 Messages postés 33 Date d'inscription lundi 22 mai 2017 Statut Membre Dernière intervention 12 mars 2019 - 12 mars 2019 à 23:54
Bonjour,

j'ai un site internet ou je dois faire un scoring afin de trier des professeurs par nombre d'avis... Actuellement j'ai la requête ci-dessous mais elle ne me convient pas car elle ne tient pas compte des cas ou le professeur a plusieurs avis à son actif... Grade = 1 ou 0 selon avis positif ou négatif. En gros si le professeur a deux avis positifs et un négatif je veux que son score soit de 10 (5*1 + 5*1 + 5*0). Vous pouvez m'aider à tout hasard ?

Merci d'avance ! :)

Mathieu

UPDATE listings, testimonials SET listings.score_reviews = 5 * testimonials.grade  WHERE listings.author_id = testimonials.receiver_id;

1 réponse

jordane45 Messages postés 38157 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 4 mai 2024 4 655
12 mars 2019 à 23:21
Bonjour,
Regarde donc ce que fait
SELECT T.receiver_id 
      ,SUM(T.grade) * 5  as score
FROM testimonials T
GROUP BY T.receiver_id

0
matmat8888 Messages postés 33 Date d'inscription lundi 22 mai 2017 Statut Membre Dernière intervention 12 mars 2019
12 mars 2019 à 23:28
Merci Jordane, j'ai que des 5 ou des 0 mais pour le moment aucun prof n'a deux commentaires lol
0
matmat8888 Messages postés 33 Date d'inscription lundi 22 mai 2017 Statut Membre Dernière intervention 12 mars 2019
12 mars 2019 à 23:30
UPDATE listings, testimonials SET listings.score_reviews = 5 * SUM(testimonials.grade) WHERE listings.author_id = testimonials.receiver_id;


Pour toi ceci marchera ou non ?
0
jordane45 Messages postés 38157 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 4 mai 2024 4 655 > matmat8888 Messages postés 33 Date d'inscription lundi 22 mai 2017 Statut Membre Dernière intervention 12 mars 2019
12 mars 2019 à 23:39
pour moi.. non ça ne marchera pas....
Le SUM s'utilise avec un GROUP BY
De plus.. faire un UPDATE avec une jointure... pas certain que ça fonctionne correctement...
Moi je serais toi j'essaierai plutôt avec une sous requête...

Mais bon... de toutes façons... stocker ce calcul dans une table est, je pense, une aération.
Surtout que le calcul (tel que je te l'ai montré) peut se faire à la volée lorsque tu en as besoin.... quel est l’intérêt dans ce cas de vouloir le stocker dans un champ.
Beacoup de débutants pensent comme toi à stocker les résultat de calculs dans des champs d'une table... pour des calculs complexes qui prennent plusieurs secondes ou minutes... à se faire je veux bien..... (et dans ce cas je passe par des procédure stockées )... mais pour des calculs aussi basiques.. ben.. je ne comprend pas.
0
matmat8888 Messages postés 33 Date d'inscription lundi 22 mai 2017 Statut Membre Dernière intervention 12 mars 2019 > jordane45 Messages postés 38157 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 4 mai 2024
12 mars 2019 à 23:45
Merci Jordane, au fait mon update / jointure marche parfaitement... Du coup tu penses que cela marchera ?

UPDATE listings, testimonials SET listings.score_reviews = 5 * SUM(testimonials.grade) GROUP BY testimonials.receiver_id WHERE listings.author_id = testimonials.receiver_id;
0
jordane45 Messages postés 38157 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 4 mai 2024 4 655 > matmat8888 Messages postés 33 Date d'inscription lundi 22 mai 2017 Statut Membre Dernière intervention 12 mars 2019
12 mars 2019 à 23:46
Tu testes... et tu verras....
0