совет по парным результатам из подзапроса - PullRequest
0 голосов
/ 26 ноября 2018

У меня есть таблица данных с двумя столбцами, user_id и preference_id.Я изо всех сил пытаюсь выяснить, как вернуть пары user_ids, которые имеют preference_id, и количество любых парных предпочтений.

Я понимаю, что это будет вопрос подзапроса, чтобы сначала найти user_id с preference_id, а затем(в подзапросе) снова проверьте базу данных на предмет нового user_id с тем же preference_id (и который не первый пользователь).Я не могу понять, как построить запрос.

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

---РЕДАКТИРОВАТЬ:

Пример таблицы:

DROP TABLE IF EXISTS `people_preferences`;
CREATE TABLE `people_preferences`
(
  `personid` int(11),
  `preferenceid` int(11)
);


INSERT INTO `people_preferences` VALUES (1,10),(1,24),(1,38),(2,1),(2,10),(2,38),(3,5),(3,38);

Я считаю, что мне нужно что-то вроде:

select people_preferences.personid,
(select people_preferences.personid where....)
from people_preferences
where people_preferences.personid <> people_preferences.personid;

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

1 Ответ

0 голосов
/ 26 ноября 2018

Если я правильно понимаю, вам нужны пары пользователей и количество.Если так:

select pp1.personid, pp2.personid,
       count(*) as num_preferences_in_common
from people_preferences pp1 join
     people_preferences pp2
     on pp1.preferenceid = pp2.preferenceid and
        pp1.personid < pp2.personid  -- only need pairs of people in one direction
group by pp1.personid, pp2.personid
order by num_preferences_in_common;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...