2013-07-26 49 views
0

我的问题似乎有一个简单的解决方案,但我无法得到它。 我有一个选择连接两个表:userslogin_log。我需要显示每个用户以及他拥有多少登录(包括那些还没有执行任何登录的登录),因此我在用户表上执行right joinPostgreSQL正确加入群组

这是我的选择:

select users.id,count(*) 
from login_log 
right join users on login_log.user_id=users.id 
group by users.id 

的问题是,对于那些在login_log表中没有条目选择展会的count(*)为1的值,用户,但它suposed为0(或空) ;

结果是下一个:

user_id | count 
---------------- 
    73  4 
    59  2 
    47  1 
    3  1 
    61  1 
    67  1 (suppose to be 0) 
    14  1 (suppose to be 0) 
    46  1 (suppose to be 0) 

任何帮助,将不胜感激。 谢谢

回答

2

你需要计算一些可选的东西(即表中可能有或没有条目的东西),而不是整行。例如;

select users.id,count(login_log.user_id) 
from login_log 
right join users on login_log.user_id=users.id 
group by users.id 

这样做的原因是,查询给每个用户至少一排,所以COUNT(*) - 它计算行 - 总是返回至少1