[PHP] classement des données

Statut
N'est pas ouverte pour d'autres réponses.

MbK_

Etudjant
slt à tous,


j'ai besoin de classer des elements d'une base de donnée en fonction d'une moyenne que j'ai calculée auparavant.

Mais comme beaucoup de ces moyennes sont les memes (varient entre 0 et 10) j'aimerais les reclasser en fonction du nombre de visites.

exemple :

j'ai 10 entrées dans ma table. 5 parmis ces 10 entrées ont un champs identique (le champ 'vote')

J'aimerais classer ces 10 entrées en fonction du champ 'vote' mais comme 5 entrées ont le meme champ 'vote', le resultat sera faussé. Alors comment faire pour faire un sous-classement en fonction du champs 'visites'?

Merci de votre aide
 

zoheir

cvm.mangaleet()
order by vote, visites ?
 
1er
OP
MbK_

MbK_

Etudjant
Bon j'ai un probleme avec mes moyennes.

J'ai le champ 'vote' et 'nb_votes'

Je dois les classer par moyennes. Est ce que je peux faire ceci :

Code:
mysql_query('SELECT 
	id, 
	(vote/nb_votes) AS moyenne
    FROM table 
    ORDER BY moyenne DESC') or die (mysql_error());
arf je coince
 
1er
OP
MbK_

MbK_

Etudjant
et pour ma requete, ca marche si je fais ainsi?


Code:
mysql_query('SELECT 
   id, 
   (vote/nb_votes) AS moyenne 
    FROM table 
    ORDER BY moyenne DESC, visites DESC') or die (mysql_error());
 

Hayato

Touriste
Ben essaies et tu le sauras :roll:
 
1er
OP
MbK_

MbK_

Etudjant
Hayato a dit:
Ben essaies et tu le sauras :roll:
ca ne marche pas mais j'ai p-e fait ca mal....


pas d'autres idées?
 

Hayato

Touriste
Tu as quoi comme erreur? Message d'erreur ou il fait pas ce qu'il faut?
 
1er
OP
MbK_

MbK_

Etudjant
Hayato a dit:
Tu as quoi comme erreur? Message d'erreur ou il fait pas ce qu'il faut?
il n'affiche rien..

en fait c'est pour mon site www.friteries.net

voici le script qui ne fonctionne pas :

Code:
<?
bdd();
mysql_query('SELECT 
   friterie_friteries.id, 
   (vote_friterie /nb_votes) AS moyenne 
    FROM friterie_friteries 
    ORDER BY moyenne DESC, click_friterie DESC') or die (mysql_error());
$number = @mysql_num_rows($query);
if (empty($number)){
	echo "rien";
}
else{
	while ($friteries=mysql_fetch_array($query)){
		echo $friteries['id'];
	} // while
} //else
	?>
 

Hayato

Touriste
Je vois que tu utilises la variable tableau $query et que tu la parcours pour l'affichage mais tu n'as pas stocké le résultat de ta requête dedans.
 

Jereck

Α & Ω
Staff
Normalement, en SQL, tu as des fonctions internes pour calculer une moyenne je crois
 
1er
OP
MbK_

MbK_

Etudjant
Jereck a dit:
Normalement, en SQL, tu as des fonctions internes pour calculer une moyenne je crois
AVG() je pense.


mais je ne vois pas comment l'utiliser, c'est ca le probleme.
 

Jereck

Α & Ω
Staff
Un truc genre :

Code:
SELECT 
   friterie_friteries.id, 
   AVG(vote_friterie) AS moyenne 
    FROM friterie_friteries 
    ORDER BY moyenne DESC, click_friterie DESC
Je pense
 

Bingo

Beer Addict
Jereck a dit:
Un truc genre :
Code:
SELECT 
   friterie_friteries.id, 
   AVG(vote_friterie) AS moyenne 
    FROM friterie_friteries 
    ORDER BY moyenne DESC, click_friterie DESC
Je pense
Si tu fais une moyenne tu dois faire un groupement :

Code:
SELECT 
   friterie_friteries.id, 
   AVG(vote_friterie) AS moyenne 
    FROM friterie_friteries 
    GROUP BY friterie_friteries.id
    ORDER BY moyenne DESC, click_friterie DESC
 
1er
OP
MbK_

MbK_

Etudjant
Bingo a dit:
Jereck a dit:
Un truc genre :
Code:
SELECT 
   friterie_friteries.id, 
   AVG(vote_friterie) AS moyenne 
    FROM friterie_friteries 
    ORDER BY moyenne DESC, click_friterie DESC
Je pense
Si tu fais une moyenne tu dois faire un groupement :

Code:
SELECT 
   friterie_friteries.id, 
   AVG(vote_friterie) AS moyenne 
    FROM friterie_friteries 
    GROUP BY friterie_friteries.id
    ORDER BY moyenne DESC, click_friterie DESC
je comprends pas tres bien à quoi sert le group by...
 
W

wilson_

ex membre
Quand tu utilises certains fonctions comme avg, sum etc tu dois obligatoirement mettre à la fin un groupe by sur tous les champs que tu selectionnes
 

Bingo

Beer Addict
Oui c'est obligatoire, car c'est ce group by qui dit quelle moyenne tu calcules.
Imagine que tu aies une table d'élèves avec leurs notes et leur classe. Tu peux vouloir calculer la moyenne des élèves, ou la moyenne des classes. Dans le premier cas tu regroupes donc par élèves, dans le deuxième tu regroupes par classe.
 
Statut
N'est pas ouverte pour d'autres réponses.
Haut