我在 SQL Server 中有一个问题。我有下表:
ROUTES = the route ID
STATIONS = the station ID
ORDER = the order the train pass from the stations
STOPS? = if the train stops at this station then is equal to 1 otherwise 0
样本数据:
-----------------------------------------------------
ROUTES STATIONS ORDER STOPS?
-----------------------------------------------------
R1 S1 1 1
R1 S2 2 1
R1 S3 3 1
R1 S4 4 1
R1 S5 5 1
R2 S2 1 1
R2 S3 2 1
R2 S4 3 1
R3 S1 1 1
R3 S2 2 1
R3 S7 3 1
R3 S4 4 1
R3 S5 5 1
R3 S6 6 1
R4 S1 1 1
R4 S2 2 1
R4 S3 3 0
R4 S4 4 1
R5 S2 1 1
R5 S3 2 0
R5 S4 3 1
R6 S3 1 1
R6 S4 2 0
R6 S5 3 0
R6 S6 4 1
R7 S2 1 1
R7 S3 2 0
R7 S4 3 0
R7 S5 4 1
所以得出结论,我们有以下路线:
R1: S1-S2-S3-S4-S5
R2: S2-S3-S4
R3: S1-S2-S7-S4-S5-S6
R4: S1-S2-S3-S4
R5: S2-S3-S4
R6: S3-S4-S5-S6
R7: S2-S3-S4-S5
假设 S2 和 S4 是连接站
这意味着如果一条路线上的火车停在那里(STOPS = 1),乘客可以下车并从另一条路线乘坐另一辆火车
所以我们有一张表提到中转站
conn_stations
--------------
S2
S4
我的问题是如何获得所有可能的路线组合,例如从 S1 站出发并到达 S5 站。乘客可以根据上面的数据改变路线,我们应该得到以下结果(路线):
R1: S1-S2-S3-S4-S5
R3: S1-S2-S7-S4-S5
temp1: S1-S2(from R1)-S7-S4-S5(from R3)
temp2: S1-S2(from R3)-S3-S4(from R1)-S5(from R3)
temp3: S1-S2-S3-S4(from R1)-S5(from R3)
e.t.c
我希望你明白我在问什么。
如果有帮助,我有一张表,上面写着两个车站之间的距离,这也表明了哪些车站是连接的
Station A Station B Distance
-------------------------------------
S1 S2 5
S2 S3 1
S2 S7 8
S3 S4 15
S4 S5 16
S5 S6 25
S7 S4 10