2011-08-15 55 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邻居相同的选择和分组用户。

我可以用IN和NOT IN查询来比较一个用户与另一个用户,或选择所有行并与php的数组函数进行比较。但随着数据库的增长,这种方法将不可行,这也只比较两个用户。

也许哈希用户的选择,我无法想象的方式可以帮助。

回答

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 

两位用户会回复多少个问题,他们回答的方式是一样的。也许这有帮助。

相关问题