Как я могу получить все различные комбинации из нескольких строк, которые имеют разные номера идентификаторов? - PullRequest
0 голосов
/ 15 марта 2019

У меня есть около 150 имен, которые связаны между собой 160K разных идентификаторов. Я хотел бы получить различные сочетания этих имен. Так, например, имена Джон и Кейт могут быть связаны тысячи раз разными идентификаторами, но я просто хочу знать, что Джон и Кейт являются связанной парой. В некоторых случаях существует более двух связанных имен. Например, вот так выглядит моя таблица:

ID| Name|  
 1| Mike|
 1|John |
 2|Kate |
 2|John |
 3|Frank|
 3|Ted  |
 3|Blue |
 4|John |
 4|Mike |
 5|John |
 5|Kate |
 6|John |
 6|Kate |

В этом случае у нас есть комбинации, основанные на различных идентификаторах. У нас также есть избыточные комбинации; например, id1 и 4, а также 2, 5, 6. Я хотел бы, чтобы выходные данные просто дали мне различные комбинации, независимо от того, в каком порядке они отображаются в таблице. Вывод будет выглядеть так:

Name1| Name2 |Name3
Mike | John  |
Kate | John  |
Frank| Ted   | Blue

4 будет опущено, потому что это первый ряд, а 5, 6 будет опущено, поскольку оно покрыто вторым рядом

1 Ответ

0 голосов
/ 15 марта 2019

Для связанных пар вы должны использовать самосоединение:

select distinct t1.name, t2.name
from t t1 join
     t t2
     on t1.id = t2.id and t1.name < t2.name;

Хотя я не уверен, решит ли это всю вашу проблему.

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