经过一些帮助后,我得到了我的数据库中的十大结果。但是没有数字指定顺序。用户当前必须查看数据以了解数据是升序还是降序。我希望每个数据都有一个数字来指定排名。
我不知道如何解决这个问题,所以建议而不是代码就足够了。有点困惑,宁愿咨询一下在我开始破解我的代码之前知道自己在做什么的人。
抱歉,我忘了添加我的代码:
$result = mysql_query("SELECT coffeeshops.*, services.*, sum(temp.total) as final_total FROM coffeeshops inner join services on coffeeshops.shop_id=services.shop_id
内连接( 选择 SUM(舒适+服务+氛围+友善+宽敞+体验+ bud_quality + bud_price + drink_price + space_cake +辅助功能+ toilet_access)/(12)/ COUNT(shop_id)AS总计,shop_id FROM评级GROUP BY shop_id )作为临时coffeeshops.shop_id = temp.shop_id GROUP BY shop_name ORDER BY final_total DESC,shop_name ASC limit 10“);
while($row = mysql_fetch_array($result)) {
OUTPUT HTML here
}
答案 0 :(得分:0)
如果我理解您的问题,这可用于创建递增列rank
:
SELECT
@rownum:=@rownum+1 `rank`,
column1
FROM table, (SELECT @rownum:=0) r
ORDER BY column1 DESC
LIMIT 10;
为了将它与GROUP BY
和聚合一起使用,您可能需要将其包装在子查询中,并将@rownum
增量器放在外部查询中。
示例:
SELECT
@rownum:=@rownum+1 `rank`,
column1,
column1_count
FROM (
SELECT
column1,
COUNT(column1) column1_count
FROM table
GROUP BY column1
ORDER BY COUNT(column1) DESC
) c,
(SELECT @rownum:=0) r
LIMIT 10;
答案 1 :(得分:0)
迈克尔的解决方案可行,但您也可以使用PHP。如果您有一个结果数组$results
,则可以对其进行排序,并使用for循环打印出结果编号。例如:
sort($results); //Asc order, or use rsort($results) for Desc order
for($i=0; $i<count($results); $i++) {
echo $results[$i].' Rank #: '.($i + 1);
}