Запрос на поиск сходных интересов вместе - PullRequest
0 голосов
/ 19 октября 2019
Name    Place visited

Ash     New york
Bob     New york
Ash     Chicago
Bob     Chicago
Carl    Chicago
Carl    Detroit
Dan     Detroit

Над таблицей образцов. На выходе должны быть два имени, которые посетили место вместе. Т.е. на выходе должны быть Ash и Bob, поскольку места, которые посетил Ash, также посещал Bob.

Вывод:

Name1  Name2

Ash    Bob

Что такое запрос для этого с использованием MySQL или даже реляционной алгебры?

1 Ответ

0 голосов
/ 19 октября 2019

Самый простой способ - использовать group_concat(). Если нет дубликатов,

select places, group_concat(names) as names
from (select name, group_concat(place order by place) as places
      from t
      group by name
     ) t
group by places
having count(*) > 1;

Это вернет все имена с одинаковыми местами в одной строке. Имена будут в списке через запятую.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...