2015-09-30 2 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

Смежные вопросы