2013-07-26 80 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