0

我有两个表,“用户”和“项目”

用户表:

id 用户名


1山姆

2 彼得

3 安迪

项目表:

id 标题 uid


1个pr1 0

2 公关 1

3 公关 3 2

4 公关 4 1

projects.uid 表示将执行该工作的用户 ID,0 表示该项目尚未分配给任何用户。

我想要一个查询来根据用户对项目进行计数和分组并返回如下内容:

uid 项目计数


0 1

1 2

2 1

3 0

4

3 回答 3

2

由于您没有返回username,因此您只需要该projects表:

select u.id, count(*) as project_count
from users u
left outer join projects p on u.id = p.uid 
group by u.id
order by u.id

如果你也想要用户名,你可以这样做:

select u.id, u.username, count(*) as project_count
from users u
left outer join projects p on u.id = p.uid
group by u.id, u.username
order by u.id
于 2012-04-25T14:23:58.233 回答
0

非常感谢您的回答,但他们似乎都没有返回正确的行,

这是我新找到的答案:

SELECT users.id,(SELECT COUNT(1) FROM projects WHERE projects.user_id = users.id) as 'count' FROM users ORDER BY id

我不太确定它的性能,但目前它可以工作......

于 2012-04-29T09:35:33.970 回答
0
select u.id, count(p.uid)
from users u
inner join project p 
on u.id = p.uid
group by p.uid
于 2012-04-25T14:24:18.153 回答