首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL多对多对多

SQL多对多对多
EN

Stack Overflow用户
提问于 2014-10-25 20:47:42
回答 2查看 112关注 0票数 0

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

代码语言:javascript
复制
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)。

EN

回答 2

Stack Overflow用户

发布于 2014-10-25 20:53:51

代码语言:javascript
复制
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
票数 0
EN

Stack Overflow用户

发布于 2014-10-25 21:03:02

获取客户端数,然后在表中执行left join,如下所示

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26562556

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档