Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1803 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Un résultat en trop dans ma requête

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Un résultat en trop dans ma requête

n°2018590
juanita88
Posté le 24-08-2010 à 09:40:27  profilanswer
 

Bonjour,
 
J'ai une table sur la population de chaque pays du monde avec un champs continent. Je souhaiterais faire des calculs (somme, moyenne...) sur les populations par continents et pour cela voici un exemple de requête :
 

Code :
  1. <?php
  2. $select = 'SELECT SUM(population),continent FROM base GROUP BY continent';
  3. $result = mysql_query($select) or die ('Erreur : '.mysql_error() );
  4. $total = mysql_num_rows($result);
  5. if($total) {
  6. echo '<table>'."\n";
  7.         echo '<tr>';
  8. echo '<td><b>Population</b></td>';
  9. echo '<td><b>Continent</b></td>';
  10. echo '</tr>'."\n";
  11. while($row = mysql_fetch_array($result)) {
  12. echo '<tr>';
  13. echo '<td>'.$row["population"].'</td>';
  14. echo '<td>'.$row["continent"].'</td>';
  15. echo '</tr>'."\n";
  16.     }
  17. echo '</table>'."\n";
  18. }
  19. else echo 'Pas d\'enregistrements dans cette table...';
  20. mysql_free_result($result);
  21. ?>


 
 
Ceci me permet bien de renvoyer la somme de la population de chaque continent sous forme de tableau. Mais le problème est qu'une ligne s'insère avec pour population 0 et rien en continent...
 
Population      Continent
0                    
952025364     afrique  
977498520     ameriques  
1500             antarctique  
3920751407   asie  
709565899    europe  
36832649      oceanie  
 
 
Ma question : auriez vous une idée de ce qui produit cette première ligne ? Une erreur dans ma requête ne serait pas étonnante... Un problème dans ma table ?
 
Merci par avance,

mood
Publicité
Posté le 24-08-2010 à 09:40:27  profilanswer
 

n°2018623
lasnoufle
La seule et unique!
Posté le 24-08-2010 à 10:39:03  profilanswer
 

99,99% de chances que tu aies tout simplement au moins une ligne "vide" dans ta table, où "continent" n'a pas de valeur (et probablement population aussi vu que la somme te retourne 0).

 

Essaies un SELECT COUNT(*) FROM base WHERE continent IS NULL

 

Edit: sinon tu peux modifier ta requete pour ignorer la ligne en trop:
SELECT SUM(population),continent FROM base GROUP BY continent HAVING SUM(population)>0
ou bien
SELECT SUM(population),continent FROM base WHERE continent IS NOT NULL GROUP BY continent

 

Mais en théorie c'est mieux si tu "corriges" tes données en base.


Message édité par lasnoufle le 24-08-2010 à 10:42:49

---------------
C'était vraiment très intéressant.
n°2018740
juanita88
Posté le 24-08-2010 à 16:54:01  profilanswer
 

Merci ! Heureuse de voir que mon code fonctionne, en fait une ligne vide s'était glissée toute à la fin de ma base, je ne l'avais pas vu celle là...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Un résultat en trop dans ma requête

 

Sujets relatifs
[RESOLU]Stocker le résultat d'une requête dans un tableauRequête résultat aléatoire
ACCESS: ComboBox pour filtrer resultat requetecomment tester si le résultat de la requête est nul [résolu]
[Proc Stock] comment récupérer le résultat d'une requête ?php/mysql résultat requête dans une seule variable
pb:récupéré le résultat d'une requétemettre le resultat d'une requete dans une variable
Convertir le résultat d'une requête SQL en fichier excelAffichage résultat requête Select depuis code VB
Plus de sujets relatifs à : Un résultat en trop dans ma requête


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR