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
何を求めているのか理解していただければ幸いです。
2 つのステーション間の距離を示す表があると、どのステーションが接続されているかも示されます。
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