如何选择表组中的所有行和sql中每个组的联系计数

时间:2014-01-19 14:18:39

标签: sql

我有两张桌子:

  • 群组
  • 联系人

分组表的字段是:

  • GROUP_ID
  • 组名

联系人表格字段为:

  • contact_group_id
  • CONTACT_ID
  • CONTACT_NAME

现在,我想选择所有具有群组联系人数量的群组......

例如:

groupname联系人计数

朋友12 | 学校8 | ennemy 0 | 家庭25 |

我希望所有群体显示(包括没有任何联系的群组)

非常感谢

3 个答案:

答案 0 :(得分:1)

你需要做左连接然后分组。请关注

select a.group_name, count(b.contact_id) from
groups a left join contacts b on
a.group_id = b.contact_group_id
group by a.group_name

请参阅Fiddle

答案 1 :(得分:0)

创建一个视图,其中包含每个组的联系人数,然后使用您的组表将外部联接视图。

CREATE VIEW contactscount AS
SELECT contact_group_id, COUNT(contact_id) AS count FROM contacts GROUP BY contact_group_id

SELECT * FROM groups OUTER JOIN contactscount ON contactscount.contact_group_id=groups.group_id

这选择Null表示没有联系人的组的计数。你可以省略视图。

答案 2 :(得分:0)

SELECT table1.group_name,COUNT(table2.contact_id)

FROM table1         INNER JOIN table2             ON table1 .group_id = table2 .contact_group_id GROUP BY table1.group_name