2011-08-29 86 views
1

的查询结果的数字行在获得我的数据库的前十名结果后,但没有指定订单的号码。用户目前必须查看数据以了解数据是升序还是降序。我希望每条数据都有一个数字来指定排名。索引号为

我不知道该怎么做,所以建议而不是代码就足够了。有点困惑,宁愿在开始破解我的代码之前咨询知道他们在做什么的人。

对不起,我忘了加上我的代码:

  $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极限10" );

 while($row = mysql_fetch_array($result)) { 
     OUTPUT HTML here 
     } 

回答

0

本工程以创建一个递增列rank,如果我明白你的问题:

SELECT 
    @rownum:[email protected]+1 `rank`, 
    column1 
FROM table, (SELECT @rownum:=0) r 
ORDER BY column1 DESC 
LIMIT 10; 

为了与GROUP BY和骨料使用,则可能需要将其包装在一个子查询并放置@rownum增量在外部查询。

例子:

SELECT 
    @rownum:[email protected]+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; 
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); 
} 
+0

修复它使用此,但通过+1 +1。还将回声线移至foreach外。谢谢 – Renai

+0

infact只是使用:\t \t \t \t $ i = 1; echo $ result [$ i]。'排名#:'。($ i ++); //输出排名前十位 – Renai

+0

@内内不客气!你能接受和/或upvote我的答案吗? = p –