2011-08-15 8 views
1

私は、多くの質問に対してユーザの選択肢を格納するテーブルを持っています。
選択肢はA、BまたはC(または0,1,2しかし、すべての質問のための3と同じ値に制限)されている ので、表には、次のようになります。mysqlデータベースのユーザ入力をPHPと比較する

question user choice 
1  1 A 
1  2 A 
1  3 B 
2  1 C 
2  2 A 
2  3 B 
3  1 B 
3  2 C 
3  3 B 
.  . . 
.  . . 
.  . . 
N  N N 

は、私は何をしたいと比較することですlast.fmネイバーのような同じ選択肢を持つユーザーをグループ化することができます。

1人のユーザーをINクエリとNOT INクエリで比較したり、すべての行を選択してphpの配列関数と比較したりすることができます。しかし、データベースが拡大するにつれて、このアプローチは実現可能ではなく、これは2人のユーザーだけを比較します。

私が想像することのできない方法でユーザーの選択肢をハッシングする可能性があります。

答えて

0
SELECT a.user, b.user, COUNT(*) AS common 
FROM Choice a 
LEFT JOIN Choice b 
     ON a.user != b.user 
     AND a.question = b.question 
     AND a.choice = b.choice 
GROUB BY a.user, b.user 

2人のユーザーに対して、同じように多くの質問が返されます。たぶんこれが役立ちます。

関連する問題