2012-03-22 18 views
4

私は5つのカテゴリで誰が勝つのかを予測するように求められる「結果を予測する」システムに取り組んでいます。私はテーブルの中にすべてのデータを持っており、誰が最も正しい答えをしたのかを数える方法を見つけ出そうとしています。私はクエリから何が必要なのか考えていますが、構文は混乱しています。誰かが私を助けてくれますか?MySQLの一致するフィールドが1つの行に表示される

<?php 
$res = array(1,2,3,4,5); //correct results 

// The idea is to count the number of table fields that match the $res array 
// and store that count in the 's' column 

$sql = mysql_query("SELECT *,s FROM awards_votes WHERE 
s+=IF(c1==".$res[0].",1,0), 
s+=IF(c2==".$res[1].",1,0), 
s+=IF(c3==".$res[2].",1,0), 
s+=IF(c4==".$res[3].",1,0), 
s+=IF(c5==".$res[4].",1,0) 
ORDER BY s DESC 
") or die(mysql_error()); 
?> 

答えて

3

は、あなたは、単に行うことができます。

SELECT 
    awards_votes.*, 
    (c1 = {$res[0]}) 
    + (c2 = {$res[1]}) 
    + (c3 = {$res[2]}) 
    + (c4 = {$res[3]}) 
    + (c5 = {$res[4]}) 
    AS num_matches 
FROM awards_votes 
ORDER BY num_matches DESC 

ブール式が(c1 = somevalue)のMySQLに0または1を返すので、これは動作します。それらを一緒に追加すると、マッチの総数が得られます。

+0

非常に賢い!マイケルありがとう – cronoklee

関連する問題