LINUX-HTML TIPS


  (2004-12-31 09:37:13, Hit : 4427, Vote : 903
 순위 구하기, SQL 문을 쓰면 넘 쉬우나 재미가 없어요...

1. SQL 문을 쓰면 더 잘한 점수 수를 구하고 여기다 "1"을 더한면 순위(등수)가 됩니다.
   동점자 수는 같은 점수(또는 자기 점수보다 높거나 같은 사람 수)를 세면(count)됩니다
   98, 97, 95, 95, 95, 64 .. 이면 95점인 사람은 3위 또는 3-5위입니다. 그냥 "3등이고 동점자는 3명입니다" 보단 "3-5등입니다"가 더 정확한 표현으로 보입니다.

2. 전에는 그냥 비교할 그룹(반)을 점수로 정렬하고 차례대로 점수를 비교하면서 수(i 로)를 셉니다. 자기 보다 놓은 점수 술르 세고, 또 같은 점수 수도 셉니다. For 문을 열심히 돌려서 수를 셉니다. SQL 문에서 그냥 구하려는 머리 쓰는 그 재미가 없어질 듯...

######### 등수 정함 ##############################################
$query = "select count(total) as l_count from $code where div = $div and total > $my_total";
$result = mysql_query($query);
$row = mysql_fetch_array($result);
$grade_low = $row["l_count"] + 1;

$query = "select count(total) as h_count from $code where div = $div and total >= $my_total";
$result = mysql_query($query);
$row = mysql_fetch_array($result);
$grade_high = $row["h_count"]

####### 전에는 ###################################################
$query = "select id, div, total from $code order by div, total desc";
$result = mysql_query($query);
$t_no = mysql_num_rows($result);

$grade_low=0;$grade_high=0;$t_div=0;$same_no=0;

for ($i=0; $i<$t_no; $i++)
{
     mysql_data_seek($result,$i);
         $row = mysql_fetch_array($result);
         $div = $row["div"];
         $id = $row["id"];
          $total = $row["total"];

if ($my_div == $div)
{
        { $grade_low = $grade_low+1;
            }
  elseif ($total  == $my_total)
        { $same_no = $same_no + 1;
            }

  $t_div = $t_div + 1;
  }
}

$grade_high = $grade_low + $same_no;
$grade_low = $grade_low +1;




* = * = * = * = * = * = * = * = * = * = * = * = * = * = * = * = * = * = * = * = * = * = *
막 집어논 레코드 번호 알아내기(Last_insert_id, MySQL -> VB) [10]

Copyright 1999-2019 Zeroboard / skin by zero