gpt4 book ai didi

php - 尝试连接表时Mysql子查询错误(制作评级系统)

转载 作者:行者123 更新时间:2023-11-30 01:21:08 24 4
gpt4 key购买 nike

好的,这就是我遇到的问题。有两个表用于处理博客评论和这些评论的评级。每次登录用户对帖子进行评分时,它都会在“commentrate”表中插入一个新行。 “commentrate”有 4 个字段。设置为 auto_increment、author_id、comment_id(已评级评论的 ID 号)的 Id,以及 1 到 5 等级的评级本身。

实际评论表有一个 commentid 字段,该字段将与 commentrate 表中的 comment_id 匹配。

我需要的是一个 Mysql 查询,它将使用其 commentid 获取博客评论表中的每条评论,并将其与具有相同 comment_id 的所有评分的平均值进行匹配。

这样做的目的是建立一个评分最高的帖子页面。

我有一个查询,如果您指定 comment_id,它将返回一个包含 comment_id 和评分平均值的结果集。但是,我无法使此查询适用于博客评论表中的每个commentid。该查询是:

SELECT commentrate.comment_id, AVG(commentrate.rating) from commentrate WHERE commentrate.comment_id=35

我尝试使用子查询和联接来实现这一点,但它不起作用,或者只会返回一行,或者会给我一条错误消息。我尝试过的查询将在下面发布。任何帮助,将不胜感激。我徒劳地挣扎了几天才弄清楚这一点。谢谢。

SELECT bd_comments.commentid, bd_comments.comment FROM bd_comments WHERE bd_comments.commentid = ALL (SELECT commentrate.comment_id, floor(AVG(commentrate.rating)) from commentrate WHERE commentrate.comment_id=bd_comments.commentid)

错误:#1241 - 操作数应包含 1 列

SELECT bd_comments.commentid, bd_comments.comment FROM bd_comments WHERE bd_comments.commentid = ALL (SELECT commentrate.comment_id, floor(AVG(commentrate.rating)) from commentrate WHERE commentrate.comment_id=bd_comments.commentid)

错误:#1241 - 操作数应包含 1 列

最佳答案

我认为您只想将表格连接在一起并取平均值:

select bd.commentid, floor(avg(cr.rating))
from commentrate cr join
bd_comments c
on cr.comment_id = bd.commentid
group by bd.commentid;

如果您的博客评论表中有重复的评论,那么您可能需要:

select cr.comment_id, floor(avg(cr.rating))
from commentrate cr
where cr.comment_id in (select bd.commentid from bd_comments);

关于php - 尝试连接表时Mysql子查询错误(制作评级系统),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18524269/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com