сравнивая пользовательские входы в базе данных mysql с php - PullRequest
1 голос
/ 15 августа 2011

У меня есть таблица, в которой хранится выбор пользователя для множества вопросов.
Варианты выбора: A, B или C. (или 0,1,2, но ограничены 3 одинаковыми значениями для каждого вопроса). Таким образом, таблица выглядит следующим образом:

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.Но по мере роста базы данных этот подход не будет осуществим, и в нем также будут сравниваться только два пользователя.

Может быть, хэширование выбора пользователя таким способом, который я не мог себе представить, может помочь.

1 Ответ

0 голосов
/ 15 августа 2011
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

Вернет для двух пользователей, сколько вопросов они ответили одинаково.Может быть, это поможет.

...