2012-01-25 6 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> 

私は問題があります。人はクイズを1回以上受け取ることができます。その人がOverAllScoreでポイント数を2倍にした場合、トップ10には2回表示されます。そのため、上位10の結果Data3 coloumnは同じ値を超えて1回だけ表示され、OverAllScoreで数値が最も高い行が1回表示されます。

+0

5月助けを借りてください。 http://dev.mysql.com/doc/refman/5.0/en/example-maximum-row.html – rd42

答えて

3

+0

候補と他のすべてのテーブルは同じ値を持つことができますが、問題はありません。私が欲しいのは、DATA5に同じ値が1つだけ表示されている場合のみです。したがって、DATA5に同じ値がある場合は上位10に、OverAllScoreテーブルで最高値の1つしか表示されません。 – LaLu

1

SELECT DISTINCTあなた

+0

SELECT DISTINCTはCANDIDATEに基づいて動作しています。私はDISTINCTだけをData5にしますか? – LaLu

+0

'... GROUP BY Data5'? –

+0

これを追加すると、OverAllScoreで最高値の人物が表示されません。 – LaLu

0

のためにそれを行うだろう... SELECT DISTINCT Candidateを試してみてはクイズの登録ユーザーを服用者である、あなたは 明確なregistered_idで選択クエリを使用することができます

+0

登録されていません。 どうすれば私は別個のData5にすることができますか? – LaLu