最受评论和最少评论的mySQL排序

时间:2014-05-29 19:33:32

标签: php mysql database

我正在尝试根据每个主题的评论数量订购商品列表,如下所示:

$page = $_GET['page'];

$query = mysql_query("SELECT * FROM topic WHERE cat_id='$page' LIMIT $start, $per_page");

if (mysql_num_rows($query)>=1)
{
while($rows = mysql_fetch_array($query))
{
$number = $rows['topic_id'];
$title = $rows['topic_title'];
$description = $rows['topic_description'];

//get topic total
$sqlcomment = mysql_query("SELECT * FROM comments WHERE topic_id='$number'");
$commentnumber = mysql_num_rows($sqlcomment);
// TRYING TO ORDER OUTPUT ECHO BY TOPIC TOTAL ASC OR DESC
echo "
<ul>
<li><h4>$number. $title</h4>
<p>$description</p>
<p>$topictime</p>
<p>$commentnumber</p>
</li>
</ul>
";
}
}
else
{
echo "<p>no records available.</p><br>";
}

通过$ num_rows(ASC / DESC值)订购每个回显的最佳方法是什么?注意:我已经更新了完整的代码 - 我试图通过$ commentnumber

订购输出

2 个答案:

答案 0 :(得分:3)

第一个查询应该是:

SELECT t.*, COUNT(c.topic_id) AS count
FROM topic AS t
LEFT JOIN comments AS c ON c.topic_id = t.topic_id
WHERE t.cat_id = '$page'
GROUP BY t.topic_id
ORDER BY count
LIMIT $start, $per_page

您可以通过以下方式获取$commentnumber

$commentnumber = $rows['count'];

根本不需要第二个查询。

答案 1 :(得分:0)

首先,你有错误

echo "divs in order from least to greatest "number = $num_rows"";

应该是

echo "divs in order from least to greatest number = " . $num_rows . "";

关于评论最多的尝试

$sql = "SELECT * FROM `table` WHERE `id` = '$id' ORDER BY column DESC/ASC";

如果没有计数栏,请尝试

$sql = "SELECT * FROM `table` WHERE `id` = '$id' ORDER BY COUNT(column) DESC/ASC";