Bonjour,
J'ai une base de donnée dans laquelle se trouve une colonne "utilisateur" et une autre "ville", je voudrai savoir quelle est la ville où il y a le plus d'utilisateurs.
Y t'il un formule sql ou doit je compter séparement chaque ville ?
Merci d'avance
Je posséde une table nommée "utilisateurs" avec un champ "nom","prenom","ville"... et je voudrai pouvoir compter le nombre d'utilisateurs de chaque ville.
par exemple
Ville1 : 20 membres
Ville2 : 14 membres
...
strucky, je te garanti que remplacer le (*) par (1), car fonctionne et que ca économise des ressources.
j'ai appris ca sur les forums phpbb-fr.com et ca fait bien longtemps que tout mes code sont comme ca.
Je viens de refaire le test et en effet cela fonctionne mais en fait cela ne me donne que le nombre max d'utilisateurs de cette ville je voudrai plutot une sorte de classement me permettant d'avoir le nom de la ville.
Comme par exemple :
1ere ville la plus representée : Ville1 : 50 utilisateurs
2eme ville la plus representée : Ville2 : 30 utilisateurs
....
Je cherche mais je ne trouve pas de solution automatisée à ce problème...
strucky, je te garanti que remplacer le (*) par (1), car fonctionne et que ca économise des ressources.
j'ai appris ca sur les forums phpbb-fr.com et ca fait bien longtemps que tout mes code sont comme ca.
Mais c'est quand même n'importe quoi, je vois pas en quoi mettre 1 optimise quelque chose.
Le COUNT(*), c'est lui qui est optimisé, ton COUNT(1) veut strictement rien dire...
$i=1; $sql = mysql_query("SELECT ville, COUNT(*) AS nb_utilisateur FROM utilisateurs GROUP BY ville ORDER BY nb_utilisateur DESC"); while($array=mysql_fetch_assoc($sql)){ echo$i.') '.$array['ville'].' : '.$array['nb_utilisateur'].' habitants<br />'; $i++; }
Désolé de remettre ça sur le "feu" mais je pense que
SELECT COUNT(1) signifie compte le nombre de lignes pour la colonne 1 de ta table (au lieu de compter toutes les lignes même si certaines colonnes sont vides), donc cela peut être intéressant selon le cas mais encore faut il être sûr que la colonne 1 sera toujours rempli (mettre id par exemple)...
Pour un count(), ça change rien. En fait, si tu fais un count sur un champ précis, si l'une des valeurs est égale à "null", alors la ligne n'est pas comptée. Si tu fais un count(*), alors tout sera compté (Sauf peut-être si tous les champs sont vides pour une ligne...)
Si tu fais un Count(id), t'es tranquille : Toujours rempli, et peu de valeurs à tester. Mais je doute que count(*) vérifie tous les champs de toutes les lignes 1 par 1... Je doute donc que la différence de vitesse se fasse sentir.
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Créateur de scripts d'automatisation en tout genre
Créateur de scripts d'automatisation en tout genre
Créateur de scripts d'automatisation en tout genre
Créateur de scripts d'automatisation en tout genre
Créateur de scripts d'automatisation en tout genre
Créateur de scripts d'automatisation en tout genre