Association de Distinct et Count

Résolu/Fermé
danielos77 Messages postés 108 Date d'inscription samedi 18 février 2006 Statut Membre Dernière intervention 16 janvier 2024 - 8 juin 2020 à 19:15
danielos77 Messages postés 108 Date d'inscription samedi 18 février 2006 Statut Membre Dernière intervention 16 janvier 2024 - 9 juin 2020 à 03:49
Bonjour à toute set à tous,

Comment puis-je écrire la requête qui me servira à alimenter un select à partir d'une table (une seule colonne en fait) en ayant d'un côté la liste distincte des valeurs mais en ayant aussi le nombre d'itération pour cette valeur ?

La liste des valeurs distinctes est relativement simple avec

$reponse = $bdd->query('SELECT DISTINCT ville FROM utilisateur');
			while ($donnees = $reponse->fetch())
			{
		echo '<option value="'.$donnees["ville"].'">'.$donnees["ville"].'</option>';
		    }


Connaître le nb de valeurs distinctes peut aussi s'obtenir avec COUNT dans 'SELECT COUNT(DISTINCT ville) FROM utilisateur' mais ce n'est pas ce que je veux malheureusement.

exemple avec dans ma colonne :
Paris
Lyon
Orléans
Lyon
Marseille
Paris
Lyon

j'aurai aimé avoir dans le select :
Lyon - 3
Marseille - 1
Orléans - 1
Paris - 2

Mais peut-être n'est pas possible avec une seule requête pour renseigner le select.

D'après la littérature, GROUP BY est plutôt utilisé pour faire des sommes et en remplaçant SUM par COUNT dans la fonction : ('SELECT DISTINCT ville, COUNT(ville) FROM utilisateur
GROUP BY ville');
ça ne donne rien. snif ;-(

Merci d'avance.
Daniel

Configuration: Windows / Firefox 77.0

2 réponses

jordane45 Messages postés 38169 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 9 mai 2024 4 663
8 juin 2020 à 19:25
Bonjour,

Ta question concerne la requête SQL ... ou ton code PHP ?
Car, de la façon dont tu l'as rédigée... on pourrait penser que c'est la requête qui te pose problème.... et dans ce cas.. c'est dans le forum Mysql que ta question aurait dû se trouver....

Quoi qu'il en soit... la requête que tu sembles avoir trouvé :
SELECT DISTINCT ville, COUNT(ville) 
FROM utilisateur
GROUP BY ville

devrait correspondre à ton besoin.
D'ailleurs, tu l'as testé DIRECTEMENT dans ta bdd ( via phpmyadmin par exemple) pour t'en assurer ??!!
Si ça ne te convient pas, explique ce que tu obtiens(donc dans phpmyadmin...) (avec une capture d'écran tant qu'à faire)

NB: N'oublie pas que tu peux mettre des "alias" dans les requêtes SQL pour pouvoir les manipuler plus simplement...
SELECT DISTINCT ville,  COUNT(ville)  as NB
FROM utilisateur
GROUP BY ville



1
danielos77 Messages postés 108 Date d'inscription samedi 18 février 2006 Statut Membre Dernière intervention 16 janvier 2024 2
9 juin 2020 à 03:49
Bonjour Jordane45,

Nickel ! Il me manquait effectivement cette notion d'alias.

Daniel
0
Bonsoir et merci Jordane45,
C'est bien la requête qui me pose pb.
J'ai pourtant cherché un forum sql... et pas mysql (le bourin).
Je teste dans phpmyadmin plus tard et donne le résultat.
Merci encore et bonne soirée.
0