그래서 나는 그렇게 같은 데이터가 테이블 companyinfo 있습니다. 따라서 John과 Bob이 Google에서 근무했다면 John은 Bob과 1 개의 연결을 통해 Bob을 알지만 John은 Bob보다 Bob이 Alex를 알기 때문에 John은 확장을 통해 알렉스를 알지만 Bob은 2 개의 연결을 의미합니다SQL 재귀 쿼리 포스트 그레스
나는 이것을 아주 간단한 그래프로 이해합니다. , 예는 찾을 않는 알렉스
WITH RECURSIVE search_graph(person, company, n) AS (
SELECT s.person, s.company, 1
FROM companyinfo s
WHERE s.person = 'John'
UNION
SELECT s.person, s.company, n+1
FROM companyinfo s, search_graph sg
WHERE s.person = 'Alex'
)
SELECT * FROM search_graph limit 50;
그러나 그것은 분명 작동하지 않습니다 문제는 코드에서 해결하지만 난 몇 시간 동안이 작업을 수행하는 재귀 SQL을 작성하는 방법을 알아 내기 위해 노력하고 만 함께했다 그러나 bob과 loops의 부정을 통한 연결을 따르지 않기 때문에 limit 50
명시 : 두 사람이 같은 회사에서 일하면 서로를 알고 있다고 가정합니다. 그 그래프는 다음과 같습니다 :
| John | --dev-- | Google | --tester-- | Bob | --blah-- | Facebook |
사람과 회사는 노드와 역할이 모서리입니다.
테이블 'companyinfo'에는 사람들 간의 연결에 대한 정보가 없습니다. –
나는 분명히해야만했다. 같은 회사에서 근무한 사람들은 서로를 알고있다. – polyx