我不知道如何提出这个问题,但我会尽我所能。我正在设计一个评论和回复系统,以便每个评论都有特定数量的回复,评论和重播分别存储在同一个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"];
}
列出了从最近到旧的评论。
是否可以修改此代码以列出回复数量最少的评论。
答案 0 :(得分:0)
你可以运行"计数"在回复表上查询,并按顺序查询。 我不是SQL专家所以我确信这可以通过多种方式得到改进,但我希望这会让你朝着正确的方向前进:
Select commentId, count(1) as c
from replytable
group by commentId
order by c;
应该为您获取每个commentId的回复数量,然后您可以获取评论'评论表中的数据根据ID。
进一步阅读: How to use count and group by at the same select statement http://www.w3resource.com/sql/aggregate-functions/count-with-group-by.php
答案 1 :(得分:0)
我相信count()就是你问题的答案。但在我们继续计算您在第二个表上的回复数量之前,您可能想要加入这两个表。您可以使用ORDER BY count(id)
答案 2 :(得分:0)
这样的事情应该有效:
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 DESC