MSSQL数据库TOP第一,第二,第三行

时间:2014-07-01 15:33:25

标签: php sql-server

MSSQL数据库TOP第一,第二,第三行。我想让这些球员像这样:

enter image description here

我现有的顶级现在是这样的:

enter image description here

我的PHP代码是这样的:

<?php
                                                day_reset_check();
                                                $ima_topa = mssql_query("Select TOP 10 Name, Class, cLevel, ".COLUM_DAY_RR." From Character Order By ".COLUM_DAY_RR." desc, cLevel desc");
                                                $sk_topa = mssql_num_rows($ima_topa);

                                                for($i=0;$i < $sk_topa;++$i) {
                                                    $vieta = $i+1;
                                                    $topo_masyvas = mssql_fetch_array($ima_topa);
                                                    $rase = "$topo_masyvas[Class]";

                                                    if($rase == 0){ $klase ='DW'; }
                                                    if($rase == 1){ $klase ='SM'; }
                                                    if($rase == 2){ $klase ='GM'; }

                                                    if($rase == 16){ $klase ='DK'; }
                                                    if($rase == 17){ $klase ='BK'; }
                                                    if($rase == 18){ $klase ='BM'; }

                                                    if($rase == 32){ $klase ='Elf'; }
                                                    if($rase == 33){ $klase ='ME'; }
                                                    if($rase == 34){ $klase ='HE'; }

                                                    if($rase == 48){ $klase ='MG'; }
                                                    if($rase == 49){ $klase ='DM'; }

                                                    if($rase == 64){ $klase ='DL'; }
                                                    if($rase == 65){ $klase ='LE'; }

                                                    if($rase == 80){ $klase ='SUM'; }
                                                    if($rase == 81){ $klase ='BS'; }
                                                    if($rase == 82){ $klase ='DM'; }

                                                    if($rase == 96){ $klase ='RF'; }
                                                    if($rase == 97){ $klase ='FM'; }

                                                    echo "
                                                    <tr class=\"top_tr\">
                                                        <td width=\"30px\"<td><font color=\"gray\">$vieta.</font></td>
                                                        <td width=\"100px\" align=\"left\" style=\"text-indent: 15px;\"<td><font color=\"gray\">$topo_masyvas[Name]</font></td>
                                                        <td><font color=\"gray\">$klase</font></td>
                                                        <td><font color=\"gray\">$topo_masyvas[cLevel]</font></td>";?>
                                                        <td><font color=\"#C7C7C7\"><?=$topo_masyvas[COLUM_DAY_RR]?></font></td>
                                                    </tr>
                                        <?            
                                                }
                                                ?>

我想从表中获取前10行。但是前3个需要显示图像的位置1,2,3。其他的数字就像在图像中展示。我应该使用什么代码。请帮助我真的很困惑......

1 个答案:

答案 0 :(得分:0)

在SQL查询中,您可以添加ROW_NUMBER()命令。例如:

$ima_topa = mssql_query("Select TOP 10 ROW_NUMBER() OVER (ORDER BY ".COLUM_DAY_RR." desc, cLevel desc) AS 'Rank', Name, Class, cLevel, ".COLUM_DAY_RR." From Character Order By ".COLUM_DAY_RR." desc, cLevel desc");

然后在你的FOR循环中,有一些条件来处理排名1,2和3不同的结果。例如:

if ($topo_masyvas[Rank] == 1) {
    // first place gets gold star
} 
elseif ($topo_masyvas[Rank] == 2) {
    // second place gets silver star
} 
elseif ($topo_masyvas[Rank] == 3) {
    // third place gets bronze star
}