多个内部连接上的重复数据

问题描述 投票:0回答:1

我画了一个简单的ERD:

我执行的查询:

select s.*, count(c.store_id), count(p.store_id)
from store s
inner join customer c on c.store_id = s.id
inner join product p on p.store_id = p.id
group by s.id, s.store_name, s.address

结果:

id 店名 地址 计数(c.store_id) 计数(p.store_id)
1 商店1 地点 12 12
2 商店2 地点 4 4
3 商店3 地点 29 29
4 store4 地点 9 9

为什么计数返回相同的数字?

对于两个计数函数,每一行都有相同的数字。

我是不是把客户和产品加入商店的同一个 id 字段搞砸了?

sql postgresql inner-join
1个回答
1
投票

在第二次加入时,您正在加入产品本身

p.store_id = p.id

试试这个:

select s.*, count(c.store_id), count(p.store_id)
from store s
inner join customer c on c.store_id = s.id
inner join product p on p.store_id = s.id
group by s.id, s.store_name, s.address
© www.soinside.com 2019 - 2024. All rights reserved.