Mysql SQL多对多对多

Mysql SQL多对多对多,mysql,sql,Mysql,Sql,我有一个问题,我必须建立一个查询。共有3张桌子,一张接一张 Table Stores - id,store_name Table Clients - id,store_id,client_name Table Products - id,client_id,product_name 简单地说,一种产品可以从许多客户那里买到。一个客户机可以位于多个商店 任务是获取所有商店及其客户的数量(一个人是至少购买了一种产品的客户。如果该客户id没有购买至少一种产品,他就不是真正的客户) select

我有一个问题,我必须建立一个查询。共有3张桌子,一张接一张

Table Stores - id,store_name

Table Clients - id,store_id,client_name

Table Products - id,client_id,product_name
简单地说,一种
产品可以从许多
客户那里买到。一个
客户机
可以位于多个
商店


任务是获取所有
商店
及其
客户的数量
(一个人是至少购买了一种产品的客户。如果该
客户id
没有购买至少一种
产品
,他就不是真正的
客户

select s.store_name, 
t.client_count
from stores s left join
(
select c.store_id, count(p.id) as client_count
from Clients c left join products p
on c.id = p.client_id
group by p.client_id
) t on s.id = t.store_id

对所有带有count(*)的表执行左联接
select s.store_name, 
t.client_count
from stores s left join
(
select c.store_id, count(p.id) as client_count
from Clients c left join products p
on c.id = p.client_id
group by p.client_id
) t on s.id = t.store_id