Page 1 sur 1

ompter le résultat de champ

Posté : 14 oct. 2008, 01:40
par x@v
Bonsoir,
j'ai une table avec un champs "langue" dans lasquelle j'ai des valeurs, fr, al, us...
je veux connaître le nombre de chaque pays pour faire des stat.
ex:
50 fr; 2 us, 2 jp
50 pour la france, 2 pour les USA, 2 pour le japon...
j'ai fais cela
$sql="SELECT langue FROM stats_trafic WHERE date='".date('d-m-Y')."' and langue='fr'";
Mais bon sa suppose une requete par pays il y a surrement un autre moyen ?
Merci

Posté : 14 oct. 2008, 07:25
par Cyrano
Je suggère de poster là où c'est pertinent : on parle de SQL ici, pas de PHP même si tu fais exécuter ta requête par PHP ;)

Essaye avec un GROUP BY :
$sql="SELECT langue ".
     "FROM stats_trafic ".
     "WHERE date='".date('d-m-Y')."' ".
     "GROUP BY langue"; 
Ceci dit, là tu ne vas rien compter du tout avec ça, donc je suggère :
$sql="SELECT COUNT(DISTINCT(pays)) ".
     "FROM stats_trafic ".
     "WHERE date='".date('d-m-Y')."' ".
     "GROUP BY langue"; 

Posté : 14 oct. 2008, 18:00
par x@v
$sql="SELECT DISTINCT(langue), os ".
     "FROM stats_trafic ".
     "WHERE date='".date('d-m-Y')."' ".
     "GROUP BY langue";
//echo $sql;  
 	   $resultat=$modelAdmin->select($sql);
 	   foreach ($resultat as $val) {
         echo $val['langue'];
 	   }
Oui effectivement ceci me renvoie la valeur de la langue, mais je devrai récupérer le nombre d'entrée par langue.

exemple:
fr= 10;
bl=1;
us=1;
dur, dur...

editer ->
j'ai trouvé c'était assez simple en définitive

$count=0;
$sql="SELECT DISTINCT(langue)".
     "FROM stats_trafic ".
     "WHERE date='".date('d-m-Y')."' ".
     "GROUP BY langue";

 	   $resultat=$modelAdmin->select($sql);
 	   foreach ($resultat as $val)
 	   {
 	     $count++;
 	     $requete=$sql.$count;
         $requete="SELECT langue FROM stats_trafic WHERE date='".date('d-m-Y')."' ".
              "AND langue='".$val['langue']."'";
         echo strtoupper($val['langue']);
         $result=$modelAdmin->selectTableau($requete);
            echo count($result).'<br>';
 	   }