选择总评论(pos& neg)+每个评论的最新评论

时间:2011-11-17 14:53:30

标签: mysql group-by

我正在编写一个查询,以获得前十大评级的商家,每个商家的正面评论数量,每个商家的负面评论数量以及每个商家的最新评论。

SELECT comment.bis_id, Sum( Case When comment.rating <= 2 Then 1 Else 0 End ) As NegVotes
, Sum( Case When comment.rating >= 4 Then 1 Else 0 End ) As PosVotes, bis.bis_name
FROM bis, comment
WHERE comment.bis_id = bis.bis_id
GROUP BY bis_id
ORDER BY PosVotes DESC
LIMIT 0, 10";

上述内容得到了积极评论和负面评论,但我似乎无法弄清楚如何获得最新评论。

1 个答案:

答案 0 :(得分:0)

SELECT 
  c.bis_id
  , Sum( Case When c.rating <= 2 Then 1 Else 0 End ) As NegVotes 
  , Sum( Case When c.rating >= 4 Then 1 Else 0 End ) As PosVotes
  , b.bis_name 
  , cc.last_comment
FROM bis b
INNER JOIN comment c on (c.bis_id = b.bis_id)
INNER JOIN (SELECT c2.bis_id, c2.comment_text as last_comment 
            FROM comment c2
            GROUP BY c2.bis_id
            HAVING c2.comment_date = MAX(c2.comment_date) ) cc 
        ON (cc.bis_id = b.bis_id)          
GROUP BY b.bis_id 
ORDER BY PosVotes DESC 
LIMIT 10 OFFSET 0