compter le nombre d'occurence de valeurs dans un champs

Mammouth du PHP | 693 Messages

01 avr. 2007, 10:48

Bonjour,

J'ai dans une table un champs pouvant contenir a,b et c, et j'aimerai savoir combien de fois il y a a, combien de fois il y a b et combien de fois il y a c.

Y a t il une requete SQL simple qui me permet de faire ca ?

Je me doute qu'il faut utiliser GROUP BY champ, mais après, je ne vois pas...

Au pire, je peux faire 3 requete, mais autand éviter si possible...

Mammouth du PHP | 19672 Messages

01 avr. 2007, 10:53

Je n'ai pas de serveur MySQL fonctionnel sur ma machine pour tester, mais il me semble qu'avec une combinaison COUNT() + DISTINCT() on doit pouvoir obtenir le résultat recherché. :-k
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 693 Messages

01 avr. 2007, 10:58

Après une petite recherche sur les mnuels de MySQL, la requet suivante merche :

SELECT champ COUNT(*) FROM table GROUP BY champ

Enfin, je dis ca, mais j'ai pas encore fait mes tables utilisé par ma requete, donc je peux pas vérifier.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

02 avr. 2007, 14:52

C'est effectivement la bonne solution, le GROUP BY agira implicitement comme un distinct, donc pas de soucis de ce côté là :)

(il te manque toutefois une virgule entre le nom du champ et le count(*) ;))
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 170 Messages

02 avr. 2007, 16:00

<?php
$req="select count(lechamp) as nb, lechamp from latable group by lechamp";
$res=mysql_query($req);
while($data=mysql_fetch_assoc($res))
{
echo $data['lechamp'],' est présent ',$data['nb'],' fois<br/>';
}
?>
Benjamin Franklin a dit :
Tu me dis, j'oublie. Tu m'enseignes, je me souviens. Tu m'impliques, j'apprends

Mammouth du PHP | 693 Messages

02 avr. 2007, 18:38

merci expreg, maintenant, je sais comment nommer mes variable de fonction :D

Quand a ma virgule, je m'en suis apercu dès que j'ai utilisé la requete. SI seulement les erreurs pouvaient être aussi simple a trouver...