Classer les résultats d'une requête par ordre croissant

Petit nouveau ! | 6 Messages

27 janv. 2007, 12:54

Bonjour à tous,

Je dispose d'une table (TEST1) qui regroupe des résultats de tests, à chaque nouvel enregistement, une ligne est générée dans la table:

ID | DATE | VILLE | NUM_DEPT | RESULTAT |
1 | 2007.01.20 | Marseille | 13 | 345 |
2 | 2007.01.20 | Lille | 59 | 20 |
3 | 2007.01.20 | Nantes | 44 | 189 |
4 | 2007.01.21 | Bordeaux | 33 | 78 |
5 | 2007.01.21 | Lyon | 69 | 134 |
6 | 2007.01.21 | Marseille | 13 | 867 |
7 | 2007.01.22 | Nantes | 44 | 42 |
8 | 2007.01.22 | Lille | 59 | 223 |
9 | 2007.01.22 | Nantes | 44 | 278 |
etc.......

Le but de l'opération est d'afficher dans un tableau un classement des régions en fonction des pourcentages de résultat par rapport à l'ensemble des resultats :

Je fais donc:
//calcul du total des resultats
$TOTAL_NATIONAL=0;
$req = "SELECT RESULTAT FROM TEST1"; 
$result = mysql_query($req);
While ($i = mysql_fetch_array($result)) 
{ 
$RESULTAT=$i["RESULTAT"];
$TOTAL_NATIONAL=$TOTAL_NATIONAL+$RESULTAT;
}


//selection des departements
$req = "SELECT DISTINCT NUM_DEPT FROM TEST1 order by NUM_DEPT asc"; 
$result = mysql_query($req);
While ($i = mysql_fetch_array($result))
{ 
$NUM_DEPT=$i["NUM_DEPT"];


//calcul du total pour chaque département
$TOTAL_DEPT=0;
$req2 = "SELECT RESULTAT FROM TEST1 where NUM_DEPT='$NUM_DEPT'"; 
$result2 = mysql_query($req2);
While ($j = mysql_fetch_array($result2))
{
$RESULTAT=$j["RESULTAT"];
$TOT_DEPT=$TOT_DEPT+$RESULTAT;														
}

											
//calcul du pourcentage											$POURCENTAGE=$TOT_DEPT*100/$TOTAL_NATIONAL;
$POURCENTAGE= number_format($POURCENTAGE,2);

}
J'obtiens donc avec cela la liste des départements par ordre croissant avec le pourcentage des résultats départements par rapport au total national.

Or pour avoir l'affichage en fonction des pourcentages obtenus, croissants ou décroissants, je bloque. J'ai pensé à creer un tableau multidimensionnel et le trier ensuite mais je ne sais pas comment faire :-(
Quelqu'un aurait la solution ?

Merci d'avance

HD
Mammouth du PHP | 1181 Messages

03 févr. 2007, 02:12

à mon avis tu devrait commencer par regrouper tes requetes en une seule ! ensuite pour le tri c'est facile : dans le WHERE tu indique le calcul à effectuer pour trouver le % puis tu fais ORDER BY ce même calcul
"Si Dieu descendait sur la Terre, tous les peuples se mettraient a genoux, excepte les Français qui diraient : " Ah ! Vous êtes la ! C'est pas trop tôt ! On va pouvoir discuter un peu !" [Michel Balfour]