2012-04-11 41 views
1

我在mysql數據庫的兩個表從第二個表計數行

id|name 
_______ 
1 |red 
2 |blue 
3 |green 
4 |white 

和用戶

id|name |group 
_______________ 
1 |joe |1 
2 |max |1 
3 |anna |2 
4 |lisa |2 

所以......喬和max是「紅」組,安娜和麗莎在「藍色」組中。

我怎樣才能讓這將包含 人數該組 在例如

red - 2 
blue - 2 
green - 0 
white - 0 

回答

0

試試這個:

select g.name, count(u.id) from groups g 
left join users u on g.id = u.group 
group by g.id, g.name 
1

檢查,如果這個工程組的簡單羅列....

SELECT COUNT(*), groups.name FROM groups, users WHERE users.group=groups.id GROUP BY groups.name 

UPDATE

SELECT groups.name, COUNT(users.*) FROM groups LEFT JOIN users 
ON groups.id=users.group GROUP BY groups.name 

這將讓顏色,即使他們沒有任何名稱的相關

0

試試這個

SELECT COUNT(g.id) as count, g.name 
FROM groups as g 
LEFT JOIN users as u 
ON u.group = g.id 
GROUP BY g.id 
1

大多數其他的答案基本上是正確的,但忘了一個重要的細節:GROUP是SQL中的保留字,所以您的列名必須轉義:

SELECT groups.name, COUNT(*) AS total_members 
FROM groups 
LEFT OUTER JOIN users 
ON users.`group` = groups.id 
GROUP BY groups.id 
0

這應該工作

SELECT g.*, COUNT(DISTINCT u.id) FROM `groups` g 
INNER JOIN `users` u on g.id = u.group 
GROUP BY u.id 
0

也許這應該工作

SELECT g.name, COUNT(u.id) AS Totoal 
FROM `groups` g 
INNER JOIN `users` u ON g.id = u.group 
GROUP BY g.id 
相關問題