1

对于每条bd_comments.commentid(意思是独特的评论),我需要将其他用户提供的所有评级的平均值加入到每条评论的行尾。

表 commentrate 包含每个用户的所有费率,通用键是comment_id. 在评论率中,该字段被调用comment_id,并且在bd_comments其中被调用commentid

我可以让 sql 选择平均值并将其连接到单行,但我不能让它对所有行都这样做。下面的示例仅返回一个指定了 comment_id 的结果。

select commentrate.comment_id, floor(avg(commentrate.rating)), 
bd_comments.comment, bd_comments.author_id from commentrate, bd_comments 
WHERE commentrate.comment_id= 1

此语句选择特定的所有评级commentid的平均值并返回附加到我需要的其他字段的平均值,但只返回一行。有几个独特commentid的。我需要一个在评论行末尾有评论平均评分的表格,以制作评分最高的页面。

4

1 回答 1

0

你的模式(我猜是因为你没有提供一个)

CREATE TABLE bd_comments 
    (
     commentid int , 
     comment varchar(10),
     author_id int
    );

CREATE TABLE commentrate 
    (
     comment_id int , 
     rating int,
     author_id int
    );

INSERT INTO bd_comments
VALUES
(1, "comment 1", 100),
(2, "comment 2", 200),
(3, "comment 3", 300);

INSERT INTO commentrate
VALUES
(1, 3.5, 100),
(2, 4, 100),
(3, 5, 100),
(1, 2.5, 200),
(2, 1, 200);

这是查询

SELECT cr.comment_id, floor(avg(cr.rating)) rating,c.comment, c.author_id
FROM commentrate cr, bd_comments c
WHERE cr.comment_id = c.commentid
GROUP BY cr.comment_id

输出

| COMMENT_ID | RATING |   COMMENT | AUTHOR_ID |
|------------|--------|-----------|-----------|
|          1 |      3 | comment 1 |       100 |
|          2 |      2 | comment 2 |       200 |
|          3 |      5 | comment 3 |       300 |

演示

于 2013-09-05T03:21:07.290 回答