Найти все связанные группы данных (графики) в самостоятельной таблице? - PullRequest
0 голосов
/ 10 октября 2018

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

Данные:

CREATE TABLE Partner (MyID VARCHAR(1), PartnerID VARCHAR(1))
INSERT INTO Partner VALUES ('A', 'B')
INSERT INTO Partner VALUES ('B', 'A')
INSERT INTO Partner VALUES ('A', 'C')
INSERT INTO Partner VALUES ('C', 'A')
INSERT INTO Partner VALUES ('C', 'D')
INSERT INTO Partner VALUES ('D', 'C')
INSERT INTO Partner VALUES ('A', 'D')
INSERT INTO Partner VALUES ('D', 'A')
INSERT INTO Partner VALUES ('X', 'Y')
INSERT INTO Partner VALUES ('Y', 'X')
INSERT INTO Partner VALUES ('Z', 'X')
INSERT INTO Partner VALUES ('X', 'Z')

Диаграмма подключений к записи

Как показано на связанном изображении, я хочу, чтобы ABCD была одной группой с идентификатороми XYZ с другим идентификатором группы.Все, чтобы я мог в конечном итоге использовать этот запрос для создания представления.

Идеальный результат:

MyID PartnerID GroupID
A     B         1
B     A         1
A     C         1
C     A         1
C     D         1
D     C         1
A     D         1
D     A         1
X     Y         2
Y     X         2
Z     X         2
X     Z         2

Я провел небольшое исследование и обнаружил похожие проблемы, которые используют CTE с рекурсией для возврата групп связанных узлов.Однако ничто из того, что я нашел, не работает с моим конкретным набором данных.Похоже, проблема заключается в циклическом характере ссылок на данные, вызывающих либо ошибку максимального предела рекурсии, либо отфильтровываемых.Аналогичный пример, который не работает с моими данными: https://www.sqlservercentral.com/Forums/FindPost520864.aspx

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

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

...