Nombre d'occurences différentes d'une table

Avatar du membre
Eléphant du PHP | 155 Messages

09 nov. 2019, 20:33

Hellooo :)

Petit problème tordu pour ce WE de trois jours :P

Voilà, une table archivant des demandes de disques. Dans cette table, deux colonnes nous intéressent pour faire des stats : username et userIP.

Je souhaite sortir une liste, dans un premier temps, indiquant les valeurs suivantes :

username : nombre de demandes | nombre d'ip

Pour le nombre de demandes ca c'est ok, mais je rame pour le nombre d'IP :(

Si je fais cette requête, pas de message d'erreur mais le nombre d'IP pour chaque utilisateur sera le nombre d'IP de 'Couin'

Code : Tout sélectionner

SELECT username AS usr, (SELECT COUNT(ID) FROM diskal_memory WHERE diskal_memory.username = usr) AS nb_diskal, (SELECT Count(userIP) FROM (SELECT DISTINCT diskal_memory.userIP FROM diskal_memory WHERE diskal_memory.username = 'Couin') AS monAlias) AS nb_ip FROM diskal_memory GROUP BY username ORDER BY nb_diskal DESC, username ASC
Si je remplace 'Couin' par usr :

Code : Tout sélectionner

SELECT username AS usr, (SELECT COUNT(ID) FROM diskal_memory WHERE diskal_memory.username = usr) AS nb_diskal, (SELECT Count(userIP) FROM (SELECT DISTINCT diskal_memory.userIP FROM diskal_memory WHERE diskal_memory.username = usr) AS monAlias) AS nb_ip FROM diskal_memory GROUP BY username ORDER BY nb_diskal DESC, username ASC
MySQL me retourne Unknown column 'usr' in 'where clause' .
Même si je rajoute "username AS usr" dans les autres SELECT.

C’est sur que je pourrais faire une nouvelle requête dans le while de la première, mais si j'ai la possibilité d'avoir les données en une seule requête, c'est aussi mieux :D
Si quelqu'un a une astuce, je suis preneur du coup de palme :)

Merkouin et bon ouiK !
Un Couin vaut mieux que Deux tu couineras :D

Mammouth du PHP | 1584 Messages

12 nov. 2019, 12:47

Boncoin à toi,


Je n'ai pas ton schéma pour tester, je l'ai fait avec une vieille table de post phpbb

et simplement fait ceci
SELECT poster_id , COUNT(*) , COUNT(DISTINCT poster_ip) FROM `phpbb3_posts` GROUP BY poster_id

Il me semble que celka retourne le résultat attendu

il faut juste le transformer avec ton schéma
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone de rubik's cube
Ingénieur Industriel Chimie / Biochimie