Division dans une requête SQL [Résolu]

Kevergeek 64 Messages postés jeudi 14 février 2002Date d'inscription 22 janvier 2006 Dernière intervention - 22 déc. 2005 à 03:46 - Dernière réponse : Kevergeek 64 Messages postés jeudi 14 février 2002Date d'inscription 22 janvier 2006 Dernière intervention
- 22 déc. 2005 à 13:04
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
Afficher la suite 

2 réponses

Répondre au sujet
malik7934 1162 Messages postés mardi 9 septembre 2003Date d'inscription 15 août 2009 Dernière intervention - 22 déc. 2005 à 09:40
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de malik7934
Kevergeek 64 Messages postés jeudi 14 février 2002Date d'inscription 22 janvier 2006 Dernière intervention - 22 déc. 2005 à 13:04
0
Utile
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 ;)
Commenter la réponse de Kevergeek

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.