我正在尝试让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();
我想知道是否可以按照他们收到的喜欢的数量订购评论而不改变表格的结构。任何建议都非常感激。
答案 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;