2012-09-24 35 views
0

下面的代碼可以正確處理僅第一值(puzzle_level == 4),它應該做的是用於puzzle_level == 4,5打印出,6 & 7 :(這個PHP/Mysql代碼在哪裏出錯了?

$result = mysql_query(" 
    SELECT puzzle_level, max(final_score) as highest_final_score 
     FROM sleuth_game 
     WHERE playerID='$_SESSION[customerID]' and final_score > 1 
     GROUP BY puzzle_level 
     ORDER BY puzzle_level"); //Load in a the highest scores 
    while($row = mysql_fetch_array($result)) { 
     echo "<p>".$row['highest_final_score']."</p>"; 
    } 

編輯: 在數據庫中的所有遊戲都是puzzle_level 4,5,6或7.我希望的輸出是玩家獲得每個puzzle_level的最高分數,但我寫的代碼只顯示puzzle_level == 4的最高分數。

+4

你需要更清楚一點關於你的意思是「正常工作僅前值」。什麼在工作?結果如何被破壞? –

+1

你會得到什麼輸出,你期望輸出什麼? – slugonamission

+0

這個聲明如何不起作用?請在您的問題中添加更多詳細信息。 –

回答

1

在SQL查詢的WHERE語句中,您希望通過'final_score> 1'達到什麼目的?

SELECT puzzle_level, max(final_score) as highest_final_score 
FROM sleuth_game 
WHERE playerID='$_SESSION[customerID]' and final_score > 1 
GROUP BY puzzle_level 
ORDER BY puzzle_level 

也許HAVING子句是,你想要什麼來實現的解決方案:

SELECT puzzle_level,MAX(final_score) AS highest_final_score 
FROM sleuth_game 
WHERE playerID='$_SESSION[customerID]' 
GROUP BY puzzle_level 
HAVING MAX(final_score)>1 
ORDER BY puzzle_level