我需要一点帮助 这是一个非常简单的问题,但我不知道为什么我不能得到我想要的东西
数据库
store
id | value
5 | s
favorite
id | store_id | value
1 | 5 | f
2 | 5 | f
3 | 5 | f
party
id |store_id | value
1 | 5 | p
2 | 5 | p
我的疑问:
SELECT COUNT(p.`id`) AS parties, COUNT(f.`id`) AS favorites,s.* FROM store s
LEFT JOIN party p ON p.`store_id` = s.`id`
LEFT JOIN favorite f ON f.`store_id` = s.`id`
GROUP BY s.`id`
结果
parties | favorites | id | value
6 | 6 | 5 | s
这是我想要的结果
parties | favorites | id | value
2 | 3 | 5 | s
任何人都可以帮助我吗?我已经尝试了所有可以想到的方法
答案 0 :(得分:1)
如果您想要对每个商店单独计算一次聚会/收藏数,则需要计算DISTINCT
个ID,这样可以消除因JOIN
而导致的重复次数;
SELECT COUNT(DISTINCT p.`id`) AS parties,
COUNT(DISTINCT f.`id`) AS favorites,
s.*
FROM store s
LEFT JOIN party p ON p.`store_id` = s.`id`
LEFT JOIN favorite f ON f.`store_id` = s.`id`
GROUP BY s.`id`;