utilisation d'une requete count()

Par FrenchGaming Team, il y a 9 ans


Bonjour,
Je souhaiterais récuperer dans une colonne toute les ligne qui sont = x et aprés les compter.

Exemple :

Dans la base donné on a une colonne is_admin qui est un group = x et is_membre qui est = x On va imaginez quand à 10 membres et 5 admin.
Je voudrais savoir comment récuper les 5 admin dans la base de donné avec la requete count() le probléme c'est que j'ai plusieurs group avec des id différent.

9 réponses

AlexJM, il y a 9 ans

J'ai pas vraiment saisi la question, que cherches-tu à faire ?

Lartak, il y a 9 ans

Bonsoir.
Si je comprends bien, tu veux à la fois récupérer le nombre d'utilisateurs qu'il y a dans chaque groupe/rôle, mais aussi pouvoir les lister selon leur groupe à travers d'une seule requête SQL ?

FrenchGaming Team, il y a 9 ans

Oui. Mais afficher le nombre d'utilisateurs par groupe

SLK, il y a 9 ans

Salut,

c'est compliqué, j'ai beau relire, je ne comprend pas...

Essaie de reformuler cette phrase :
on a une colonne is_admin qui est un group = x et is_membre qui est = x

On va imaginez quand à 10 membres et 5 admin.
Est-ce que tu veux dire :
Pour l'exemple, disons qu'il ya dans la base de données : 10 membres, et 5 admins.

Je voudrais savoir comment récuper les 5 admin dans la base de donné avec la requete count()
Est-ce que tu veux dire que tu n'as pas vraiment besoin de récupérer les admins, mais seulement de les compter ?

le probléme c'est que j'ai plusieurs group avec des id différent.
Donne nous le nom de ta table, ainsi que tous ses champs, ça va beaucoup nous aider à comprendre.

En plus j'ai l'impression que Lartak te dit une chose, et que tu redemande la même chose xD

  • Si je comprends bien, tu veux à la fois récupérer le nombre d'utilisateurs qu'il y a dans chaque groupe/rôle, mais aussi pouvoir les lister selon leur groupe à travers d'une seule requête SQL ?
  • Oui. Mais afficher le nombre d'utilisateurs par groupe
FrenchGaming Team, il y a 9 ans

Ses pas évident a expliquer.
Voila la table xf_user

Dans la table xf_user Nous avons une collone user_group_id je voudrais récuperer par exemple tout les utilisateur qui on l'id 3 sauf que à l'avenir il peuvent créer des nouveaux groupes donc on peut avoir 5 groupes. Donc je voudrais que de façons automatique cela compte le nombre d'utilisateur dans chaque groupe.

J'ai essayer de faire sa :

$req = $this->_getDb()->fetchAssoc(' SELECT COUNT(username) FROM xf_user WHERE user_group_id IN (1,2,3 ) '); return $req;

J'obtient sa avec un var_dump

2 => array (size=1) 'COUNT(username)' => int 2

Je voudrais donc que sa affiche le nombre d'utilisateur par groupes.

Ex :
id1 = 5 user
id2 = 2user
id3 = 3user

SLK, il y a 9 ans

Ah je vois.

Je ne crois pas qu'on puisse tout faire d'un coup (si je me trompe, dites le moi)
Alors soit :

  • on fait plusieurs requêtes (chacune ciblant 1 seul ID)
  • on travail un peu le tableau, que nous retourne la requête qui cible tous les IDs

    Je te montre une idée pour "faire" la 2ème proposition :

    $req = $this->_getDb()->fetchAssoc(' SELECT category_id FROM posts WHERE category_id IN (1, 2, 3) ');

$i = 0;
$max = count($req);
while ($i < $max)
{
$req[$i] = $req[$i]['category_id'];
$i++;
}

$nb_utilisateurs_par_group = array_count_values($req);

J'avais essayé avec un foreach à la place du while au début, mais je n'ai pas réussi...

// j'ai essayé ça
foreach ($req as $entry)
{
$entry = $entry['category_id'];
}

// et ça
foreach ($req as $key => $value)
{
$key = $value['category_id'];
}

FrenchGaming Team, il y a 9 ans

D'accord je vais essayer du coup

Balbert, il y a 9 ans

Salut il y a plus simple:

SELECT user_group_id, COUNT(username) FROM xf_user WHERE user_group_id IN (1,2,3) GROUP BY user_group_id
SLK, il y a 9 ans

Ah ouais bien vu Balbert !

Par contre ça retourne un gros tableau un peu pénible à utiliser.
Pour en revenir à un tableau simple on peut faire un truc comme ça :

$req = $this->_getDb()->fetchAssoc(' SELECT user_group_id COUNT(username) FROM xf_user WHERE user_group_id IN (1, 2, 3) GROUP BY user_group_id '); echo '<pre>'; print_r($req); echo '</pre>'; $nb_utilisateurs_par_group = []; foreach ($req as $key => $value) { $nb_utilisateurs_par_group += [ $value['user_group_id'] => $value['COUNT(username)'] ]; } echo '<pre>'; print_r($nb_utilisateurs_par_group); echo '</pre>';