Tri sur 2 champs mysql [Résolu]

Signaler
Messages postés
121
Date d'inscription
mercredi 27 octobre 2004
Statut
Membre
Dernière intervention
5 mars 2007
-
Messages postés
121
Date d'inscription
mercredi 27 octobre 2004
Statut
Membre
Dernière intervention
5 mars 2007
-
Bonjour,
J'ai une base de données mysql qui contient 2 champs note & nb_votant
Je calcule une moyenne :
$moyenne = note/nb_votant;
Je voudrai faire un tri dans ma table et afficher les 10 moyennes les plus élevées.

J'ai commencé comme ça mais ca ne trie pas correctement :

$sql = "SELECT note, nb_votant FROM table WHERE note!='0' AND nb_votant!='0' ORDER BY note, nb_votant DESC LIMIT 10";
$req = mysql_query($sql);
while( $result = mysql_fetch_array($req) )
{
echo("$moyenne");
}

Pouvez vous m'aider SVP ?

5 réponses

Messages postés
121
Date d'inscription
mercredi 27 octobre 2004
Statut
Membre
Dernière intervention
5 mars 2007

J'ai trouvé !!
J'ai ajouté un champ moyenne dans ma BDD/ L'update se calcule automatiquement en fonction de note et de nb_votant.
Ensuite, j'ai tout simplement créé ma requête avec comme critère de tri mon champ moyenne.

Merci de ton aide
Slt
Messages postés
654
Date d'inscription
jeudi 3 avril 2003
Statut
Membre
Dernière intervention
10 février 2009
1
Ben ... j'ai une petite idée mais bon :)

$sql = "SELECT note, nb_votant FROM table WHERE note!='0' AND nb_votant!='0' ORDER BY note, nb_votant DESC LIMIT 10"; 
$req = mysql_query($sql);
$i = 0;
$moyenne = 0;
while( $result = mysql_fetch_array($req) )
{ 
$i++;
$moyenne .= $result['note']." + ";
}
echo $moyenne/$i;


voila c'est un petit exemple ... je sais pas s'il fonctionne j'ai pas testé :)

win
Messages postés
121
Date d'inscription
mercredi 27 octobre 2004
Statut
Membre
Dernière intervention
5 mars 2007

En fait j'ai pas été assez précis...
Pour calculer ma moyenne j'utilise déjà une requête

$sql = "SELECT note, nb_votant FROM recette WHERE note!='0' ORDER BY note DESC LIMIT 10";
$req = mysql_query($sql);
$result = mysql_fetch_array($req);

$result_note = $result["note"]/$result["nb_votant"];
$result_note1 = round($result_note,1);

Ensuite, et seulement ensuite, je veux faire un tri grâce à une 2ème requête en fonction de $result_note1, de ce type :
$sql1 = "SELECT note, nb_votant FROM recette ORDER BY $result_note1 DESC LIMIT 10";
Messages postés
282
Date d'inscription
vendredi 16 mai 2003
Statut
Membre
Dernière intervention
19 juillet 2006

oulah!!!! $result_note1 n'est pas dans ta base???
donc ta 2° requete risque de pas marcher...
ce que tu peu faire c transformer $result_note1 en tableau avec 1 case par moyenne: ainsi il te suffi de trier ton tableau pour avoir tes moyenne dans l'odre ke tu veu

Que la Force soit avec toi, Jeune Padawan!!!
Messages postés
121
Date d'inscription
mercredi 27 octobre 2004
Statut
Membre
Dernière intervention
5 mars 2007

et non !!
malheureusement $result_note1 n'est pas dans la BDD. c une valeur que je calcule grâce à 2 champs de la BDD.
Ca aurait été trop simple !!
Je vais essayer ta méthode, on verra ce que ça donne merci .