如何使用MYSQL计算另外两个表中的条目数?
我有三张桌子如何使用MYSQL计算另外两个表中的条目数?,mysql,sql,database,Mysql,Sql,Database,我有三张桌子 职位 图像 投票 我希望能够获得帖子中的所有数据,以及投票总数和和帖子相关的图片数量。我可以得到一个或另一个,但不能同时得到两个 此代码用于获取帖子的分数 选择 员额。*, 合并(总和(票数值),0)作为分数 发帖 posts.post\u id=vots.target\u id上的左连接投票 按posts.post\u id分组 这段代码用于获取帖子旁边的图像数量 选择 员额。*, 合并(计数(images.image\u id),0)为num\u图像 发帖 左连接post
- 职位
- 图像
- 投票
选择
员额。*,
合并(总和(票数值),0)作为分数
发帖
posts.post\u id=vots.target\u id上的左连接投票
按posts.post\u id分组
这段代码用于获取帖子旁边的图像数量
选择
员额。*,
合并(计数(images.image\u id),0)为num\u图像
发帖
左连接posts.post\u id=images.belient\u to\u post上的图像
按posts.post\u id分组
但是如果我把两者结合起来
选择
员额。*,
合并(计数(images.image_id),0)为num_图像,
合并(总和(票数值),0)作为分数
发帖
posts.post\u id=vots.target\u id上的左连接投票
左连接posts.post\u id=images.belient\u to\u post上的图像
按posts.post\u id分组
得分
乘以图像数量。我如何才能有效地阻止这种情况?我必须按另一列分组吗
我正在使用MySQL 5.7.31。我建议使用相关子查询:
SELECT p.*,
(SELECT COUNT(*)
FROM images i
WHERE p.post_id = i.belongs_to_post
) as num_images,
(SELECT COALESCE(SUM(v.value), 0)
FROM votes v
WHERE p.post_id = v.target_id
) as score
FROM posts p;
使用
图像(属于\u post)
和投票(target\u id,value)
上的索引,这可能比在外部查询中使用聚合的任何方法都快得多。我建议相关子查询:
SELECT p.*,
(SELECT COUNT(*)
FROM images i
WHERE p.post_id = i.belongs_to_post
) as num_images,
(SELECT COALESCE(SUM(v.value), 0)
FROM votes v
WHERE p.post_id = v.target_id
) as score
FROM posts p;
使用图像(属于\u post)
和投票(target\u id,value)
上的索引,这可能比在外部查询中使用聚合的任何方法都要快得多