【发布时间】:2020-10-11 18:31:21
【问题描述】:
上下文
当我尝试返回多行消息值并找到存储在不同表中的相应类似计数时,我无法理解 JOIN 语句的应用。我试图从中提取的第一个表是包含我想要的消息的表:
SELECT forums.forum_id, forums.message FROM forums LIMIT 3
然后我尝试使用生成的 forum_id 值插入到第二个查询中,该查询获得类似计数:
SELECT COUNT(forumvotes.forum_id) AS voteCount FROM forumvotes JOIN forums ON forumvotes.forum_id = forums.forum_id
WHERE forumvotes.forum_id = [insert returned forum ids here]
问题
我相信我可以通过使用连接将这两个查询合并为一个,但我不确定如何去做。当我像这样将两者结合起来时,新的voteCount 列会返回已插入的所有论坛投票数,而不仅仅是我想要的三个特定消息的点赞数:
SELECT forums.forum_id, forums.message,
(SELECT COUNT(forumvotes.forum_id) AS voteCount FROM forumvotes JOIN forums ON forumvotes.forum_id = forums.forum_id WHERE forumvotes.forum_id = forums.forum_id) AS voteCount
FROM forums LIMIT 3
因此,查询返回三行,每行包含个人消息(这很好),但它们也返回相同的 voteCount 值 13,因为数据库中插入了 13 个喜欢,但每一行的voteCount 值应该只有一两个,因为每条消息只有一两个赞。
如何将这两个查询合并为一个?如果有任何混淆,请告诉我。
【问题讨论】: