2012-01-25 7 views
0

안녕하세요 저는 데이터베이스에서 가장 높은 점수를 가진 상위 10 개 결과를 얻는 간단한 스크립트를 만들었습니다. 여기 코드입니다 :PHP와 MySql 쿼리

<html><head><title>MySQL Table Viewer</title></head><body> 
<?php 
$db_host = 'localhost'; 
$db_user = 'aa_quiz'; 
$db_pwd = 'mypassword'; 

$database = 'aa_quiz'; 
$table = 'aaresult'; 

if (!mysql_connect($db_host, $db_user, $db_pwd)) 
    die("Can't connect to database"); 

if (!mysql_select_db($database)) 
    die("Can't select database"); 

// sending query 
$result = mysql_query("SELECT Candidate, Data5, Data3, OverAllScore, TotalPossibleScore, PercentageScore, PercentagePass, PassFail FROM {$table} WHERE QuizName='Test Quiz #505853118-1' ORDER BY OverAllScore DESC LIMIT 10"); 
if (!$result) { 
    die("Query to show fields from table failed"); 
} 

$fields_num = mysql_num_fields($result); 

echo "<h1>Table: {$table}</h1>"; 
echo "<table border='1'><tr>"; 
// printing table headers 
for($i=0; $i<$fields_num; $i++) 
{ 
    $field = mysql_fetch_field($result); 
    echo "<td>{$field->name}</td>"; 
} 
echo "</tr>\n"; 
// printing table rows 
while($row = mysql_fetch_row($result)) 
{ 
    echo "<tr>"; 

    // $row is array... foreach(..) puts every element 
    // of $row to $cell variable 
    foreach($row as $cell) 
     echo "<td>$cell</td>"; 

    echo "</tr>\n"; 
} 
mysql_free_result($result); 
?> 
</body></html> 

하지만 문제가 있습니다. 사람이 퀴즈를 한 번 더 가져갈 수 있으며, 그 사람이 OverAllScore에서 더 높은 점수를 가진 두 번을 만들면 상위 10 개에 두 번 표시됩니다. 이제 상위 10 개 결과에 내 스크립트에 어떻게 추가 할 수 있습니까? Data3 coloumn은 한 번 더 같은 값이며, 그 다음에 OverAllScore에서 가장 높은 수치를 가진 사람이 한 번만 표시됩니다.

+0

이 수도로 선택 쿼리를 사용할 수 복용 사람을 당신을 위해 그것을 할 것입니다 ... SELECT DISTINCT Candidate 시도 도움이 되십시오. http://dev.mysql.com/doc/refman/5.0/en/example-maximum-row.html – rd42

답변

3

+0

후보와 다른 모든 테이블은 동일한 값을 가질 수 있지만 문제는 아닙니다. 내가 원했던 것은 DATA5에 같은 값이 단지 하나만 보여줄 때뿐입니다. 따라서 상위 10 개에 동일한 값이 DATA5 인 경우 OverAllScore 테이블에서 가장 높은 숫자를 가진 하나만 표시됩니다. – LaLu

1
+0

SELECT DISTINCT가 CANDIDATE를 기반으로 작업 중입니다. Data5에 대해서 DISTINCT 만 원하십니까? – LaLu

+0

'... GROUP BY Data5'? –

+0

내가 이것을 추가하면 OverAllScore에서 가장 높은 가치를 가진 사람을 표시하지 않습니까? ' – LaLu

0

이 퀴즈 등록 된 사용자는, 당신은 별개의 registered_id

+0

등록되어 있지 않습니다. 그렇다면 어떻게 별개의 Data5를 사용할 수 있습니까? – LaLu