SQL - Как найти все связанные идентификаторы из таблицы - PullRequest
2 голосов
/ 03 апреля 2012

У меня есть таблица, которая показывает отношения между людьми примерно так.

id  linked_id
1   2
1   3
3   4
4   1

Нет явного порядка в таблице или в отношениях.

Я пытаюсь найти способ перечислить все идентификаторы, которые имеют какую-либо ссылку на данный идентификатор. Так что для примеров из таблицы выше:

id = 1 вернет 1, 2, 3 и 4.
id = 2 также вернул бы 1, 2, 3 и 4

Это база данных оракула, и запрос должен быть в простом SQL. Спасибо за вашу помощь, это сводит меня с ума.

1 Ответ

3 голосов
/ 03 апреля 2012

Вы можете использовать что-то вроде этого:

SELECT linked_id
  FROM DATA
 START WITH ID = :1
CONNECT BY NOCYCLE PRIOR ID = linked_id
        OR ID = PRIOR linked_id
UNION
SELECT ID
  FROM DATA
 START WITH linked_id = :1
CONNECT BY NOCYCLE PRIOR ID = linked_id
        OR ID = PRIOR linked_id
UNION
SELECT :1 FROM dual
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...