2011-08-15 95 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 

兩位用戶會回覆多少個問題,他們回答的方式是一樣的。也許這有幫助。

相關問題