对于每一个bd_comments.commentid
(意味着唯一的评论),我需要加入所有其他用户提供的评论行末尾的平均评分。
表注释率保存每个用户所做的所有速率,公共密钥是comment_id
。在注释率中,字段名为comment_id
,而在bd_comments
中,则称为commentid
。
我可以使sql选择average并将其连接到单个行,但不能让它对所有行都这样做。下面的示例只返回指定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
。我需要一个表,在评论行的末尾有一个评论平均评分,以形成一个最高评级的页面。
发布于 2013-09-04 19:21:07
您的模式(我猜是因为您没有提供一个)
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 |
https://stackoverflow.com/questions/18626899
复制相似问题