2009-10-30 5 views
1

J'ai deux tables: une 'liste d'utilisateurs' avec des colonnes 'grade' et 'userID', et une table 'login' qui enregistre chaque fois qu'un utilisateur est connecté. a une colonne 'userID' associée à 'userID'. Cette table de connexion comporte une ligne insérée à chaque fois qu'un utilisateur est connecté. Par conséquent, si un utilisateur se connecte trois fois, trois lignes seront ajoutées à cette table.Valeurs de comptage MySQL basées sur plusieurs colonnes

J'ai besoin d'exécuter une requête qui retourne le nombre de connexions uniques par grade.

Ie: grade0 = 20 connexions, Grade1 = 30 connexions

Je sens qu'il est une combinaison de DISTINCT, comte et GROUP BY, mais je ne peux pas faire les choses ...

Cette requête est erroné:

SELECT DISTINCT(userID), COUNT(*) as count, u.grade FROM userlist as u, login as l WHERE u.userID = l.userID GROUP BY u.grade, u.userID 

Il ne retourne pas les connexions uniques, mais toutes les connexions (par exemple, si un utilisateur est connecté deux fois, il est compté deux fois).

Répondre

0
select u.grade 
    , count(distinct l.userid) 
    from userlist u 
    join login l 
    on l.userid = u.userid 
group 
    by u.grade 
+0

Parfait! Cela fait exactement ce dont j'avais besoin. Merci. – Khuffie

Questions connexes