2011-08-29 88 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 –