SQL-запрос для сравнения пользователей по лайкам / антипатиям

0

Я ищу некоторые термины, или направление на это, а не кто-нибудь, чтобы написать запрос. Но я не знаю, какой вопрос задавать, или какой жаргон для исследования.

Итак, у меня есть таблица, позвольте ей вызвать reactions и она содержит три столбца: пользователи, post_id и реакция:

user | post_id | reaction
1    | 23      | 1
1    | 24      | 0
2    | 15      | 0
3    | 16      | 0
4    | 17      | 1
3    | 14      | 0
2    | 23      | 1
2    | 12      | 1
1    | 17      | 0

Как я могу выбрать пользователя, который будет реагировать на сообщения общего характера с данным пользователем?

Например, если бы знал, что пользователь №5 ответил "1" на пост "12" и ответил "0" на пост "15", то я нашел бы его сопоставимым с пользователем № 2, который так же реагировал на эти два данных точки.

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

В любом случае, спасибо вам заранее за чтение, и всякая помощь в том, где читать дальше, была бы очень признательна!

Теги:
relational-database

1 ответ

2
Лучший ответ

Вы можете просто подсчитать количество общих реакций с помощью самообучения

select r.user, count(*)
from reactions r join
     reactions r2
     on r.post_id = r2.post_id and r.reaction = r2.reaction
where r2.user = @user
group by r.user
order by count(*) desc;
  • 0
    Вау. И тогда я мог бы просто отсортировать по count () DESC?
  • 0
    @WadeSonenberg. , , Да, что это хорошая идея.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню