我正在嘗試構建一個簡單的路由查找器,它可以計算並存儲路由從A-B獲取的節點。一個由階段(節點及其下一個可能的中繼段)和一個route_stage表組成,它應該能夠存儲使用唯一路由ID計算出來的每條路由。Oracle中的SQL路由查找器 - 遞歸?
階段表
STAGEID START_STATION NEXT_HOP_STATION LENGTH
---------- ------------------------------ ------------------------------ ----------
1 Penzance Plymouth 78
2 Plymouth Exeter 44.8
3 Exeter Taunton 36.6
4 Exeter Salisbury 96.6
5 Salisbury Basingstoke 38.2
6 Basingstoke Southampton 52.7
7 Southampton Poole 37
8 Poole Weymouth 31.6
9 Taunton Reading 99.5
10 Reading Basingstoke 18
11 Reading Paddington 40.9
12 Taunton Bristol 48.8
13 Bristol Bath 13
14 Bath Swindon 37.5
15 Swindon Reading 39.8
Route_Stage表
ROUTEID STAGEID
---------- ----------
1 1
1 2
1 3
1 9
1 11
2 6
2 7
2 8
2 10
2 11
對於以上的情況下,與在彭贊斯和橫樑,普利茅斯,埃克塞特,湯頓,讀ID 1點開始路線和終止於帕丁頓。理想情況下,我想創建一個存儲過程,該存儲過程接受開始和結束工作站的入口參數,以便內部代碼可以計算出合適的路線。
我已經看過遞歸,但有點迷路,因爲我不確定代碼在節點有多個潛在路徑時應該如何反應?它如何知道哪一個是正確的。
任何幫助,非常感謝。謝謝!
你的意思是「正確的_一個」?例如,你是不是會遍歷所有的路線,或者你正在尋找最短的路線? – Sepster
我不認爲以這種方式組織的數據將有助於解決問題。例如你需要一張提到哪個站位在哪條路線上的表格。交叉站也會派上用場。 –