我在contact
和project
之间有很多关联。
contact:
+-----------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
+-----------------+--------------+------+-----+---------+----------------+
project:
+-------------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
+-------------------+--------------+------+-----+---------+----------------+
project_contact:
+---------------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------------+---------+------+-----+---------+-------+
| project_id | int(11) | NO | PRI | NULL | |
| contact_id | int(11) | NO | PRI | NULL | |
+---------------+---------+------+-----+---------+-------+
我想计算有多少个联系人与一个项目,一个项目或多个项目相关联。如果我可以在一个查询中得到它,那绝对是很棒的,否则,三个不同的查询也可以。
PS:我正在使用HQL,但是将SQL转换为HQL不会有问题。
谢谢!
最佳答案
我称之为“直方图直方图”查询。它基本上是聚合之上的聚合:
select NumProjects, count(*) as NumContacts
from (select c.id, count(pc.contact_id) as NumProjects
from contacts c left join
project_contacts pc
on pc.contact_id = c.id
group by c.id
) c
group by NumProjects
order by NumProjects;
关于sql - 数很多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35651736/