【问题标题】:mysql join count lines in third tablemysql 在第三个表中加入计数行
【发布时间】:2015-09-30 12:57:14
【问题描述】:

我有三个这样的 mySQL 表:

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

现在我想得到以下结果:

client.*, network.name, number_of_activities_for_each_client

其实我有这个选择语句:

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

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

【问题讨论】:

    标签: mysql join count multiple-tables


    【解决方案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
    

    【讨论】:

    • 您可能需要将其更改为COALESCE(COUNT(a.id), 0),以防客户端的活动表中没有行。
    • 不,我认为不需要添加该函数,如果未找到记录,则返回 0:sqlfiddle.com/#!9/2cdb7/1
    • 哦...我 99% 确定它返回 null。我不知道我是从哪里得到这个想法的。
    猜你喜欢
    • 2014-06-29
    • 1970-01-01
    • 2015-11-22
    • 1970-01-01
    • 2020-03-02
    • 1970-01-01
    • 2019-06-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多