【发布时间】:2011-03-22 12:12:23
【问题描述】:
我有 4 张桌子:
user,
administrative_division,
assignment,
user_has_assignment
在用户和管理部门之间存在多对一的关系,其中多是用户,一个是管理部门。在 user 和 assignment 之间,通过 user_has_assignment 表存在多对多关系。
我可以使用这个命令获取每个管理部门有多少用户:
select division_id, count(*) from user group by division_id;
例如,这给了我这样的东西:
division_id count(*)
1 4
2 10
等等
我可以使用以下命令获取每个用户拥有多少个分配:
select user_id, count(*) from user_has_assignment group by user_id;
结果相似
user_id count(*)
1 2
2 10
但我不知道如何在一个查询中得到这样的结果:
division_id user_count assignment_count
1 10 20
2 2 4
其中 user_count 是每个管理部门的用户总数,assignment_count 是一个特定管理部门的用户拥有的所有分配的总数。
【问题讨论】:
-
如果您的部门中有两个用户具有相同的分配,您希望发生什么?这会在计数中增加 1 还是 2?