SQL Server에서 From 및 To 열을 테이블에 포함합니다.SQL Server : 최장 경로
From To
- -
1 5
1 7
1 8
1 17
2 11
3 5
4 7
5 12
5 13
5 17
8 13
8 17
13 17
어떻게 입력으로 주어진 두 npoint 사이에서 가장 긴 경로를 찾으십니까? 5 - - 13-17
SQL Server에서 From 및 To 열을 테이블에 포함합니다.SQL Server : 최장 경로
From To
- -
1 5
1 7
1 8
1 17
2 11
3 5
4 7
5 12
5 13
5 17
8 13
8 17
13 17
어떻게 입력으로 주어진 두 npoint 사이에서 가장 긴 경로를 찾으십니까? 5 - - 13-17
WITH Path (FromID, ToID, Length, nodes) AS (
SELECT t1.FromID, t1.ToID, 0 as Length,
CAST(t1.FromID AS VARCHAR(max)) +'-'+
CAST(t1.ToID AS VARCHAR(max)) as nodes
FROM Table1 t1
UNION ALL
SELECT P.FromID, t2.ToID, P.Length + 1,
P.nodes + '-' + CAST(t2.ToID AS VARCHAR(max)) as nodes
FROM Table1 t2
JOIN Path P
ON P.ToID = t2.FromID
)
SELECT *
FROM Path
WHERE FromID = 1
and ToID = 17
Order by Length
OUTPUT 17 행 1에서
가 입력이 1,17 인 경우, 예를 들어, 그 응답은 1이어야 길이가 2 인 경로가있는 넥타이
| FromID | ToID | Length | nodes |
|--------|------|--------|-----------|
| 1 | 17 | 0 | 1-17 |
| 1 | 17 | 1 | 1-8-17 |
| 1 | 17 | 1 | 1-5-17 |
| 1 | 17 | 2 | 1-5-13-17 |
| 1 | 17 | 2 | 1-8-13-17 |
Juan에게 감사드립니다. 내 데이터 세트에서이 오류가 발생합니다. 문이 종료되었습니다. 명령문 완료 전에 최대 재귀 100이 모두 소모되었습니다. CTE 내부의 입력을 지정할 수 있습니까? – Jhudge
이것은주기가 너무 길거나 경로가 너무 길다는 것을 의미합니다. 'length <100'를 추가하십시오. –
문제가 긴 경로 인 경우 무한 재귀를 허용하도록 최대 재귀를 변경할 수 있습니다. 그러나 당신의 질문이 끝나지 않을주기가 있다면. https://stackoverflow.com/questions/9650045/the-maximum-recursion-100-has-been-exhausted-before-statement-completion –
경로 란 무엇입니까? 이'(x, y)'가 데카르트 비행기에서 좌표를 맞추고 있습니까? 'From To'와 같은 것입니까? 나는 당신의 모범이 ** 가장 긴 ** 길인 것을 보지 못했다. 또한 두 노드'(1,17)'사이의 경로를 언급합니다. 어떤 노드가 1이고 어떤 노드가 17입니까? 'ID'가 누락 되었습니까? –
네, From-To와 같습니다. 귀하의 의견을 토대로 질문을 업데이트했습니다. 감사. – Jhudge
데이터에 재귀 사이클이 있습니까? –