2012-03-29 81 views
1

我有兩個表的mysql數據庫。MYSQL添加行並從不同表中計數

優先(信息)

+---------+------+----------+ 
| species | sex | user  | 
+---------+------+----------+ 
| bird | NULL |  1 | 
| bird | f |  1 | 
| cat  | f |  1 | 
| cat  | m |  1 | 
| dog  | f |  1 | 
| dog  | m |  2 | 
| hamster | f |  2 | 
| snake | m |  1 | 
+---------+------+----------+ 

二(用戶)

+--------+-----+ 
| user | id | 
+--------+-----+ 
| amy | 1 |  
| dav | 2 | 
| mot | 3 |  
| mmm | 4 | 
| aaw | 5 | 
| dsa | 6 | 
+--------+-----+ 

我要計數,並從表「信息」在表中的每個用戶行「用戶」 像本次車展值

+---------+------+----------+ 
| user | id | count  | 
+---------+------+----------+ 
| amy | 1 |  6 | 
| dav | 2 |  2 | 
| mot | 3 |  0 | 
| mmm | 4 |  0 | 
| aaw | 5 |  0 | 
| dsa | 6 |  0 | 
+---------+------+----------+ 

我該如何做這個查詢?

回答

1
select users.user, users.id, count (species.name) 
from users left join species 
on users.id = species.user 
group by users.user, users.id 
order by count (species.name) desc 
+0

我的解決方案和KAJ之間的區別是,我使用的是「LEFT JOIN」,而他使用的「內連接」。我的查詢將顯示沒有連接寵物的人(按照示例),而他的只會顯示已連接寵物的人。 – 2012-03-29 10:25:32

+0

偉大的作品就像一個魅力! – Dar 2012-03-29 11:26:05

+0

你知道我怎樣才能只用逗號計算每行的值? 爲exmp:我有價值「1,2,5,7」行nammed物種 我想計數,並顯示它爲一個值爲4的新行 – Dar 2012-03-29 11:35:31

0

是不是一樣的東西:

select u.user, u.id, count(i.user) 
from user u 
    inner join information i on i.user = u.id 
group by u.user, u.id