我画了一个简单的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 字段搞砸了?
在第二次加入时,您正在加入产品本身
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