2013-06-10 2 views
0

мой вопрос заключается в том, как обозначить верхние 3 записи на основе столбца «avg_score» в таблице, оставаясь при этом остальной частью записей, но без ярлыка. Скажем, у меня есть таблица как это:Маркировка верхних 3 записей

Entry avg_score 

entry_1 | 4.3 
entry_2 | 9.4 
entry_3 | 4.6 
entry_4 | 7.1 
entry_5 | 2.1 
entry_6 | 1.9 

Я хочу, чтобы иметь возможность найти верхнюю 3 на основе столбца 'avg_score' и отобразить это нравится:

«1-е место: entry_2

второе место: entry_4

третье место: entry_3

entry_1

entry_5

entry_6"

Любая помощь будет оценен по достоинству!

ответ

0

Сначала вы должны сделать свой запрос, который будет заказать по avg_score desceing.

После того, что вы можете сделать что-то вроде этого:

<? 
$x = 1; 
while($row = mysql_fetch_array($q)){ 
    if($x < 4){ 
     echo $x.". place: "; 
    } 
    echo $row['Entry']; 
} 
?> 

, если вы хотите, чтобы показать 1-ый и т.д., то используйте:

<? 
$x = 1; 
while($row = mysql_fetch_array($q)){ 
    if($x == 1){echo "1st place: "; 
    }elseif($x == 2){echo "2nd place: "; 
    }elseif($x == 3){echo "3rd place: ";} 
    echo $row['Entry']."<br />"; 
    $x++; 
} 
?> 
+0

это не сработало, оно повторилось: «1. entry_2 1.entry_4 1.entry_3 1. entry_1 и т. Д.» –

+0

Изменить одну строку на echo $ row ['Entry']. "
"; и после этого добавить $ x ++; в следующей строке – Vilsol

+0

ok отлично! есть ли способ заставить систему маркировки сказать «1-й, 2-й, 3-й», а не «1. 2. 3.». –

1

канонический способ сделать это, чтобы определить ранг, а затем использовать ранг для определения строк предварять с именем входа:

select concat(case when rank = 1 then '1st place: ' 
        when rank = 2 then '2nd place: ' 
        when rank = 3 then '3rd place: ' 
        else '' 
       end, entry) 
from (select t.*, @rank := @rank + 1 as rank 
     from t cross join (select @rank := 0) const 
     order by avg_score desc 
    ) t 
+0

удивительным, так как я был бы в состоянии поставить все это в отдельные переменные, чтобы иметь возможность настраивать все в php? –

+0

@MikeKochendorfer. , , Если я правильно понял вопрос, просто используйте подзапрос. Он будет иметь звание. –