Moyenne avec AVG

Eléphanteau du PHP | 24 Messages

23 janv. 2008, 21:40

Bonjour à tous,
J'ai un soucis de compréhension ou d'utilisation avec AVG.
Obtenir le résultat de la moyenne d'un champ ne pose pas de problème. Par contre, comment calculer la moyenne de chaque valeur de ce champ. Je m'explique. Je souhaite afficher les moyennes de chaque vote de mes sondages du type :
Aimez-vous PHP FRANCE ? (346 votes)
réponse 1 : Ouaou, moi j'adooooooore (92 %)
réponse 2 : Ne se prononce pas (1%)
réponse 3 : Vous pouvez répéter la question (5%)
réponse 4 : Heu Joker ! (2%)
La table concernée comprend quatre champs dont celui des réponses et du nombre de votes.
Et là j'y arrive pas, pourtant mysql doit savoir faire. Comment récupère-t-on ces données et comment les traite-t-on pour l'affichage ?
Merci d'avance.

d0m
Mammouth du PHP | 1141 Messages

24 janv. 2008, 09:40

C'est pas très clair ce que tu racontes, veux tu dire que ta table est composé de 4 champs :
N°_de_reponse, nombre_de_vote, champ3, champ4
Et contient donc 4 élements : la réponse1, réponse 2, réponse3 et réponse 4 ?

Et tu veux une moyenne ou un pourcentage?

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

24 janv. 2008, 10:45

Modération :
stallaf, afin d'obtenir une réponse sur ce forum, il est indispensable de :

- Préciser quel est le SGBD utilisé ainsi que sa Version
- Poster la Structure des Tables utilisées dans la requête sous la forme d'un "CREATE TABLE ..." :!:
(Vous pouvez exporter la structure d'une table via phpMyAdmin. Retirez les colonnes inutiles)
- Indiquer le message d'erreur SQL le cas échéant.

Pensez à utiliser les balises

Code : Tout sélectionner

pour afficher les requêtes SQL, la Structure des Tables et si nécessaire un échantillon des données. Assurez vous également d'avoir suivi ces [url=http://www.phpfrance.com/forums/voir_sujet-19378.php]conseils de débogage[/url]. [/color]

Eléphanteau du PHP | 24 Messages

24 janv. 2008, 11:04

Dom, bonjour,
Ok c'est pas clair et mal présenté alors je corrige.
Ma base sondage contient quatre tables. L'une d'entre elle comprend quatre champs contenant bien sur des valeurs :
id_sondage : id_reponses : reponses : nb_votes :
1 : 1 : Ouaou, moi j'adooooooore : 318 :
1 : 2 : Ne se prononce pas : 3 :
1 : 3 : Vous pouvez répéter... : 17 :
1 : 4 : Heu, joker : 10 :

Je souhaite récupérer et afficher en pourcentage le nombre de chaque vote, ce qui donnera :
Aimez-vous PHP FRANCE ? (346 votes)
Ouaou, moi j'adooooooore - 318 votes - 92%
Ne se prononce pas - 3 votes - 1%
Vous pouvez répéter... - 18 votes - 5%
Heu Joker ! - 7 votes - 2%

Voilà, je souhaiterais récupérer les pourcentages ? Est-ce possible directement avec mysql ? Dans ce cas comment faire pour traiter les données renvoyées ?
Merci.

ViPHP
ViPHP | 5924 Messages

24 janv. 2008, 11:13

Tu as reposé exactement la même question. Si un modérateur est passé, c'est pour que tu suives ses instructions, pas pour que tu répètes ce que tu as déjà dit…

Eléphanteau du PHP | 24 Messages

24 janv. 2008, 11:29

Hum...
Désolé mais le modérateur a posté son message alors que j'étais en train de rédiger le mien. (et effectivement je suis resté un long moment sur cette rédaction) Bref, je n'en avais pas connaissance. J'en ai pris bonne note.
Par contre, l'ambiance est souvent sévère ici. On peut se tromper, on débute, ce n'est pas forcément facile pour des débutants.
Enfin je croyais effectivement que c'était aux modérateurs d'intervenir et de faire éventuellement des reproches et des remarques, les autres, je vois pas.
Bien, comme je cherche de l'aide, peut-être mal exprimée mais pas à me faire taper sur les doigts ou pincer l'oreille, je vais m'abstenir et abandonner ce sujet.
Ah, au fait, Sékiltoyai, bonjour ou un truc du genre, bref les civilités, çà fait pas de mal.
Allez, bye.
(ce message sera peut-être effacé... nous verrons...)

d0m
Mammouth du PHP | 1141 Messages

24 janv. 2008, 11:49

Alors ce n'est pas une question de moyenne.
Pour avoir un pourcentage, il te faut :

- le nombre de vote de la réponse du sondage

Code : Tout sélectionner

SELECT nb_votes FROM table WHERE id_sondage=1 AND id_reponses=1
- le nombre total de vote pour le sondage

Code : Tout sélectionner

SELECT SUM(nb_votes) FROM table WHERE id_sondage=1
Ensuite le pourcentage est un simple calcul :
pourcentage = nb_votes_reponse * 100 / nb_votes_total

Il faut donc intégrer la 2ème requete en sous requête à la première et faire le calcul directement en SQL
Par contre, l'ambiance est souvent sévère ici. On peut se tromper, on débute, ce n'est pas forcément facile pour des débutants.
Il me semble que les débutants sont respectés et jamais envoié bouler d'après ce que j'ai vu
par contre il y des règles qui sont pécises et efficaces et qui prennent 5 min seulement à lire.
Elles sont là pour que les messages soient le plus clair possible et donc que la réponse arrive le plus rapidement et simplement possible.

Eléphanteau du PHP | 24 Messages

24 janv. 2008, 12:30

Merci d0m pour la solution.
Pour le reste, plus de commentaires, je ne souhaite pas polémiquer.
A tchao.