> Tous les forums > Forum des Webmasters
 PHP/MySQL: count () plusieurs champs
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
tonguim
  Posté le 15/06/2006 @ 22:00 
Aller en bas de la page 
Petit astucien
Bonjour, j'ai une table qui comporte plusieurs champs (id, utilisateurs, grpUtilisateurs etc.), avec grpUtilisateurs: groupes d'utilisateurs, utilisateurs: login Je sélectionne le groupe d'utilisateur dans une zone de selection (sur un formulaire) et à l'aide d'une requête (je programme en php) je voudrais compter d'une part le nombre de groupes d'utilisateurs, le nombre d'utilisateurs par groupe. J'ai ceci comme requête:
select count(utilisateurs), count(grpUtilisateurs) from users where grpUtilisateurs="$var" group by grpUtilisateurs
Ma requête ne fonctionne pas elle m'affiche seulement la valeur du dernier count, c'est a dire count(grpUtilisateurs). Quelqu'un peut il m'aider à rectifier ma requête? Merci.
Publicité
The Retriever
 Posté le 16/06/2006 à 03:41 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

ne peux tu pas faire 2 requetes? c 'est tellement plus simple sinon, as tu essayé en renommant, les count... [code]select count(utilisateurs) as uti, count(grpUtilisateurs) as grp where... [/code]
papyboingtown
 Posté le 16/06/2006 à 03:46 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien
Il me semble que tu t'enflames un peu et que tu ne peux pas faire ça en une seule requête Oui, alors il me semble que tu peux essayer un trucs comme ça pour compter les utilisateurs par groupe : [code]select grpUtilisateurs, count (utilisateurs) from users group by grpUtilisateurs;[/code] ça va te donner sous forme d'un tableau, le nom du groupe et le nombre d'utilisateurs y appartenant. Pour avoir la répartition de tes utilisateurs sans renseigner le groupe : [code]select count (utilisateurs) from users group by grpUtilisateurs;[/code] Là t'aura plus qu'un tableau avec une colonne. Et pis pour compter le nombre de groupe [code]select (distinct grpUtilisateurs) from users; Si t'utilise pas le "distinct", il te donne le nombre d'enregistrement ou le champ "grpUtilisateur" n'est pas NULL. En tout cas si j'ai bien vu ou tu veux en venir, c'est pas possible ta requête Vive le sql [fete] A la vôtre [bierre] (oups ! j'ai un peu trainé, j'avais pas vu ta réponse retriever[choc])

Modifié par papyboingtown le 16/06/2006 03:56
ti_ouf
 Posté le 16/06/2006 à 08:21 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

il faut déjà connaitre les relations qu'ont tes champs. J'imagine que ton champ utilisateurs differe à chaque enregistrement ... Mais grpUtilisateurs est il différent à chaque enregistrement, ou est ce qu'il existe par défaut 1 nombre de groupe d'utilisateur ? Il y a des redondances ?

Modifié par ti_ouf le 16/06/2006 08:21
tonguim
 Posté le 16/06/2006 à 09:25 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien
ti_ouf a écrit :
Mais grpUtilisateurs est il différent à chaque enregistrement, ou est ce qu'il existe par défaut 1 nombre de groupe d'utilisateur ? Il y a des redondances ?
Chaque utilisateur est unique; mais grpUtilisateurs n'est pas forcéménent différent à chaque enregistrement. Plusieurs utilisateurs peuvent être dans le même groupe.
ti_ouf
 Posté le 16/06/2006 à 18:46 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Mais tu ne connais pas pas le nombre exact de groupe ? tu ne fixes pas tes règles ?
koala01
 Posté le 17/06/2006 à 16:40 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien
Salut, Ce genre de requete n'a aucune chance de donner des résultats cohérent… En effet, la condition WHERE sert à sélectionner les enregistrement de la table qui remplissent la condition, et seuls ceux-ci sont sélectionné avant d'etre comptés… Ici, tu n'auras de toutes manière qu'un seul groupe sélectionné, simplement parce que tu utilise l'opérateur de comparaison =, alors que si tu souhaites sélectionner plusieurs groupes d'utilisateurs, tu dois utiliser l'opérateur in (liste de valeur)… Comme, de toutes manières, un utilisateur ne peut jamais faire plusieurs fois partie d'un meme groupe (il en fait partie, ou non, mais il ne peut pas faire partie … trois fois du meme groupe[clindoeil]) et que, partant de ce que j'explique plus haut, tu n'aura jamais qu'un seul groupe… le nombre d'enregistrements sélectionnés sera le nombre… d'utilisateurs qui font partie du groupe… (tu peux le récupérer grace à la fonction PHP mysql_num_rows() [clindoeil]) Ce qui pourrait fonctionner, c'est un code ressemblant à ceci: [code] //une chaine temporaire pour le travail $temp=""; //on se base sur un tableau contenant les grous nommé $tab for($i=0;$i<array_count_values($tab);$i++) { //utilisation de l'opérateur ternaire pour concaténer la chaine //on rajoute une virgue en fin de chaine si ce n'est pas le dernier //élément de la chaine $i!=array_count_values($tab) ? $temp.="'$tab[$i]',": $temp.="'tab[$i]'"; } //on va compter le nombre de groupes et d'utilisateurs distincts renvoyés grace //à cette liste de groupes //cptutil contiendra le nombre d'utilisateur différents et //cptgroup contiendra le nombre de groupe différents (qui devrait correspondre // à array_count_values($tab) :-p) $sql="SELECT *,count(distinct utilisateurs) as cptutil, count(distinct grpUtilisateurs) as cptgrp, from users where $grpUtilisateurs in ($temp) group by grpUtilisateurs"; //on effectue la requete $cherche=mysql_query($sql,$infoconnexion); //on place le tout dans un tableau $trouve=mysql_fetch_assoc($cherche); //si tu le veux, tu récupère le nombre d'enregistrements renvoyés $combien=mysql_num_rows($cherche); [/code]

Modifié par koala01 le 17/06/2006 16:45
Page : [1] 
Page 1 sur 1

Vous devez être connecté pour participer à la discussion.
Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !
Recevoir PC Astuces par e-mail


La Lettre quotidienne +226 000 inscrits
Avec l'actu, des logiciels, des applis, des astuces, des bons plans, ...

Les bonnes affaires
Une fois par semaine, un récap des meilleurs offres.

Les fonds d'écran
De jolies photos pour personnaliser votre bureau. Une fois par semaine.

Les nouveaux Bons Plans
Des notifications pour ne pas rater les bons plans publiés sur le site.

Les bons plans du moment PC Astuces

Tous les Bons Plans
449,95 €TV QLED 55 pouces Hisense 55U7QF (4K UHD, HDR10, Dolby Vision, Smart TV) à 449,95 € (via ODR)
Valable jusqu'au 23 Juin

LDLC fait une superbe promotion sur la TV QLED 55 pouces Hisense 55U7QF qui passe à 599,95 € Or Hisense rembourse 150 € pour l'achat de cette TV qui vous reviendra à 449,95 € après remboursement. Cette TV dispose d'une dalle QLED 4K UDH HDR 10, du son Dolby Vision, du bluetooth et d'une connexion WiFi pour accéder à Netflix, Prime Video, Disney+, MyCanal, YouTube, Plex, Deezer, Bein Sports, etc. L'assistant vocal Amazon Alexa est également de la partie pour un contrôle des commandes par la voix !


> Voir l'offre
33,79 €Clé USB Sandisk Ultra Go 256 Go à double connectique USB 3.1 Type A et C à 33,79 €
Valable jusqu'au 24 Juin

Amazon fait une promotion sur la clé USB Sandisk Ultra Go 256 Go à double connectique USB 3.1 Type A et C qui passe à 33,79 €. Cette clé USB  dispose d'un connecteur USB Type C et d'un connecteur classique de type A. Grâce à elle, transférez en toute simplicité et rapidement (jusqu'à 150 Mo/s) vos fichiers entre vos smartphones, tablettes et ordinateurs. On la trouve ailleurs à plus de 45 €.


> Voir l'offre
13,99 €Clé USB Sandisk Ultra 64 Go à double connectique USB 3.1 Type A et C à 13,99 €
Valable jusqu'au 23 Juin

Amazon fait une promotion sur la clé USB Sandisk Ultra 64 Go à double connectique USB 3.1 Type A et C qui passe à 13,99 € alors qu'on la trouve ailleurs à plus de 25 €. Cette clé USB  dispose d'un connecteur réversible USB Type C et d'un connecteur classique de type A. Grâce à elle, transférez en toute simplicité et rapidement (jusqu'à 150 Mo/s) vos fichiers entre vos smartphones, tablettes et ordinateurs. 


> Voir l'offre

Sujets relatifs
Trier plusieurs colonnes mysql
tester un champs mysql
Considérer un champs vide mysql non null
rajout données ds champs mysql
test champs base mysql
Wrong parameter count for mysql ==> resolu
mysql : récupérer plusieurs tables
MySQL - somme des valeurs d'un champs [->Résolu
champs de longueur indéfini dans mysql
mySQL: count () ne m'affiche pas tous les enregis
Plus de sujets relatifs à PHP/MySQL: count () plusieurs champs
 > Tous les forums > Forum Forum des Webmasters