2010-03-28 79 views
0

我有3個表用戶(id,名稱),組(id,名稱)和users_groups(user_id,group_id)。用戶和羣組有多對多的關係,所以第三個是用於存儲用戶和羣組的關係。我想從每個組中具有用戶數的組中選擇所有數據。到目前爲止,我想出了這一點:MySQL計數問題

SELECT groups.*, COUNT(users_groups.user_id) AS user_count 
FROM groups 
LEFT JOIN users_groups ON users_groups.group_id = groups.id 

的問題是,查詢結果沒有返回任何團體不具有用戶(users_groups可是沒有任何記錄與這些集團的GROUP_ID)。


我應該如何創建我的查詢選擇所有的羣體,他們的用戶數,或者用戶數爲0,如果沒有用戶爲該組?

回答

2

線的東西你只需要添加GROUP BY子句:

SELECT groups.*, COUNT(users_groups.user_id) AS user_count 
FROM groups 
LEFT JOIN users_groups ON users_groups.group_id = groups.id 
GROUP BY groups.id 

你會則獲得USER_COUNT 0不具有每組對應的users_groups記錄。

2

嘗試沿着

SELECT groups.* 
    , sum(if (ISNULL(users_groups.user_id),0,1)) AS user_count 
FROM groups 
LEFT JOIN users_groups 
    ON users_groups.group_id = groups.id 
GROUP BY groups.id 
+0

謝謝,它運作良好。 – skujins 2010-03-28 14:35:28