我不知道怎么问这个问题,但我会尽我所能的。我正在设计一个评论和回复系统,这样每个评论都有特定数量的回复,并且评论和回放分别存储在同一MySQl数据库中的两个表中,因此我们必须使用两个表
表1
评论ID |评论|日期
表2
X|回复文本|日期
其中X表示回复所属的评论ID。
我知道代码
$res=mysql_query("SELECT * from commenttable ORDER BY `Date` DESC ");
while($row=mysql_fetch_array($res))
{
echo $row["Comment"];
}按最近到旧的顺序列出注释。
是否可以修改此代码以列出回复次数最多的评论到最少的评论。
发布于 2014-05-21 16:01:28
您可以在replies表上运行"count“查询,并按此进行排序。我不是SQL专家,所以我确信可以通过多种方式改进这一点,但我希望这会让您走上正确的方向:
Select commentId, count(1) as c
from replytable
group by commentId
order by c;您应该可以获得每个commentId的回复数量,然后您可以根据ID从comments表中获取评论数据。
进一步阅读:How to use count and group by at the same select statement http://www.w3resource.com/sql/aggregate-functions/count-with-group-by.php
发布于 2014-05-21 16:02:12
我相信count()将会是你问题的答案。但是,在我们继续计算第二个表上的回复数量之前,您可能需要连接这两个表。您可以使用ORDER BY count(id)
发布于 2014-05-21 16:05:16
像这样的东西应该是有效的:
select t1.comment_id, count(t2.x)
FROM table1 t1 LEFT JOIN table2 t2
ON t1.comment_id=t2.x
GROUP BY t1.comment_id
ORDER BY 2 DESChttps://stackoverflow.com/questions/23777156
复制相似问题