Division dans une requête SQL

[Résolu]
Signaler
Messages postés
64
Date d'inscription
jeudi 14 février 2002
Statut
Membre
Dernière intervention
22 janvier 2006
-
Messages postés
64
Date d'inscription
jeudi 14 février 2002
Statut
Membre
Dernière intervention
22 janvier 2006
-
Donc voilà j'ai une base de données dont une
table (montages) qui comporte une colonne (votes) qui contient 2
nombres séparés par une virgule (a,b)

a : somme de tous les votes effectués

b : nombre de votes effectués

a/b : moyenne des votes



par exemple si : $montage['votes'] = "14,2";

celà veut dire qu'il y a eu 2 votes effectués dont le total est 14, par exemple "9" et "5"

a = 14

b = 2

a/b = 7



Et je voudrais récupérer la moyenne (a/b) directement dans ma requete sql !

$req = "SELECT ??? FROM montages WHERE id='$id'";



Est-ce que vous savez comment faire une division dans la requête ?

Pour récupérer les champs a et b par concaténation, j'ai trouvé ça dans
mon cours de bdd mais c'est du postgresql et ca n'a pas l'air de
fonctionner exactement pareil en mysql :

select a ||','|| b as votes from montages;



Si vous trouvez la solution en séparant a et b en deux colonnes dans la bdd, je m'arrangerai pour arranger tout ça



Merci d'avance et désolé si chui pas très compréhensible mais je maitrise pas très bien le chinois

2 réponses

Messages postés
1154
Date d'inscription
mardi 9 septembre 2003
Statut
Membre
Dernière intervention
15 août 2009
17
Hello,



J'suis pas une bête en mysql, mais j'ai pondu ça:



SELECT votes, right( votes, length( votes) -
locate( ',', votes) ) AS r, left( votes, locate( ',', votes) -1 ) AS l,
(right( votes, length( votes) - locate( ',', votes) ) / left( votes,
locate( ',', votes) -1 )) AS d FROM table



Si tu exécute cette requête sur la table suivante:



votes

14,3

12,4

16,5



voici le résultat que ça te donne:



votes r l d

14,3 3 14 0.21428571428571

12,4 4 12 0.33333333333333

16,5 5 16 0.3125












*****
THINK -> SEEK -> ASK
Messages postés
64
Date d'inscription
jeudi 14 février 2002
Statut
Membre
Dernière intervention
22 janvier 2006

Impec' merci !!

Dans mon cas il faut juste inverser le left et le right mais sinon c'est parfait



SELECT votes, right(
votes, length( votes) - locate( ',', votes) ) AS r, left( votes,
locate( ',', votes) -1 ) AS l, (left( votes, locate( ',', votes) -1 ) / right( votes, length( votes) - locate(
',', votes) )) AS d FROM table



votes r l d
14,3 3 14 4.666667
12,4 4 12 3
16,5 5 16 3.2



Merci encore ;)