2015-09-30 66 views
1

计数行我有三个的MySQL表是这样的:MySQL的加入第三个表

client     network     activities 
\_id      \_id      \_id 
\_name     \_name     \_client_id 
\_[...]     \[...]     \_[...] 
\_network_id 

现在我想有以下结果:

client.*, network.name, number_of_activities_for_each_client 

其实我有这样的select语句:

select client.*, network.name 
from client 
left join network 
on client.network_id = network.id 

如何扩展语句?我也想看到所有的客户。

回答

1
SELECT c.*, n.name, COUNT(a.id) number_of_activities_for_each_client 
FROM clients c 
LEFT JOIN network n 
ON n.id = c.network_id 
LEFT JOIN activities a 
ON a.client_id = c.id 
GROUP BY c.id 
+0

如果客户端的活动表中没有行,您可能需要将其更改为'COALESCE(COUNT(a.id),0)'。 – AdamMc331

+0

不,我发现没有必要添加该函数,如果没有找到记录,它将返回0:http://sqlfiddle.com/#!9/2cdb7/1 – Alex

+0

哦...我很喜欢99%确定它返回null。我不知道从那时起我有什么想法。 – AdamMc331