我有一个问题,我必须建立一个查询。有3张桌子,多对多一个接一个。
Table Stores - id,store_name
Table Clients - id,store_id,client_name
Table Products - id,client_id,product_name简而言之,一个Product可以从很多Clients上买到。并且一个Client可以在多个Stores中。
任务是用他们的Clients号获得所有的Stores (一个人是一个购买了至少一个产品的客户。如果client_id没有购买至少1个Product -他不是真正的Client)。
发布于 2014-10-25 20:53:51
SELECT store_name, COUNT(store_name)
FROM Stores s
INNER JOIN Clients c on (s.id = c.store_id )
INNER JOIN Products p on (c.id = p.client_id)
GROUP BY store_name发布于 2014-10-25 21:03:02
获取客户端数,然后在表中执行left join,如下所示
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_idhttps://stackoverflow.com/questions/26562556
复制相似问题