Присоединение среднего рейтинга к концу всех строк выбора MySQL

Для каждого bd_comments.commentid (то есть уникального комментария) мне нужно присоединить среднее значение всех оценок, предоставленных другими пользователями, к концу строки каждого комментария.

Таблица комментариев содержит все оценки, которые делает каждый пользователь, а общий ключ — 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. Мне нужна таблица со средним рейтингом комментариев в конце строки комментария, чтобы сделать страницу с самым высоким рейтингом.


person user2731409    schedule 05.09.2013    source источник


Ответы (1)


Ваша схема (я догадался, потому что вы не предоставили ее)

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 |

демонстрация

person Praveen Lobo    schedule 05.09.2013
comment
Спасибо! Я попробую! - person user2731409; 05.09.2013
comment
Работал отлично! Еще раз большое спасибо за вашу помощь! - person user2731409; 05.09.2013