按喜欢的数量列出评论

时间:2014-01-25 14:35:49

标签: php mysql comments facebook-like

我正在尝试让PHP通过降低他们收到的喜欢数量来列出评论。

目前,评论的内容和他们收到的喜欢的数量分别在两个表中:“评论”和“喜欢”。

PHP代码:

从“评论”表中获取评论:

$this->db->order_by ('comment_id', 'asc');
$data['comment'] = $this->db->select()->get('comment');

从“喜欢”表中获取喜欢:

$data['like'] = $this->db->get('like');

显示每条评论的喜欢数量:

$query_like=$this->db->query("select ip from like where comment_id='$comment_id'");
$count_like=$query_like->num_rows();

我想知道是否可以按照他们收到的喜欢的数量订购评论而不改变表格的结构。任何建议都非常感激。

1 个答案:

答案 0 :(得分:0)

如果我正确理解数据结构,您只需要join和聚合:

select c.*, count(*) as numlikes
from comments c join
     upvote l
     on c.comment_id = l.comment_id
group by c.comment_id
order by count(*) desc;

编辑:

要获得零赞成票的评论,请从另一个方向left outer join开始:

SELECT c.*, count(u.comment_id) as num_upvotes
FROM comment c left join
     upvote u
     on c.comment_id = u.comment_id
WHERE c.comment_id = '$interview_id'
GROUP BY c.comment_id
ORDER BY num_upvotes DESC;