2014-09-30 79 views
0

我有2个与多对多关系相关的实体SQL多对多排名

clients,services,clients_has_services。

我需要与各自的客户的数量检索所有服务,像这样:

服务1 20
客服2 10
服务3 5
服务4 0
....

我在进行查询时遇到问题,此问题只返回一条记录:

SELECT 
    services.id as id, 
    services.name as name, 
    COUNT(clients_has_services.services_id) as ranking 
FROM services 
LEFT JOIN clients_has_services ON services.id = clients_has_services.services_id 
+0

您能否提供样本数据? – Jens 2014-09-30 05:41:47

回答

1

您需要按分组划分:

SELECT 
    services.id as id, 
    services.name as name, 
    COUNT(clients_has_services.services_id) as ranking 
FROM services 
LEFT JOIN clients_has_services ON services.id = clients_has_services.services_id 
GROUP BY 
    services.id, 
    services.name 
+0

做到了!我会在几分钟内给出答案 – 2014-09-30 05:43:45