駅に発着するバスの情報が入ったDBがあります。私のアプリケーションでは、ユーザーが選択した駅からのすべての出発を表示する必要があります。
つまり、選択した駅を通過する各路線を特定する必要があります。私は次のクエリでそれを行いました:
SELECT DISTINCT LinePaths.TimetableID
,Lines.LineName AS [Line]
,Timetable.Heading
,LinePaths.Departure
,Regime.Name AS [Regime]
FROM LinePaths
INNER JOIN Timetables ON Timetables.TimetableID = LinePaths.TimetableID
INNER JOIN Lines ON Timetable.LineID = Lines.LineID
INNER JOIN Stations ON LinePaths.Station = Station.StationID
INNER JOIN Regimes ON Timetables.Regime = Regimes.RegimeID
WHERE Station = @Station
問題は、代わりにTimetable.Heading
バスが向かう最終駅の名前を表示する必要があることです。これらは、私が自由に使用できるテーブルのスキーマです。
Stations - ID, Name
Lines - LineID, LineName
Timetable - TimetableID, LineID, Heading, Regime
(Regime
バスが運行する曜日を定義します)LinePaths - ID, TimetableID, SN, Arrival, Departure, StationID
(SN
は、特定のパス上のステーションの順序を定義するシリアル番号です (バスはその特定の順序でそれらのステーションに到着します)。)
したがって、代わりに がTimetable.Heading
必要でありStations.Name
、ここで問題になります。
その列は、バスが行く最終駅を表す必要があるため (路線ごとに)、最終駅を特定する必要があります (ここでも、選択した駅を通過する路線ごとに)。そのためには、LinePaths
テーブルを使用する必要があります。そのテーブル内では、データは によってグループ化されTimetableID
ているため、 の同じ値を持つエントリは、バスが駅に到着する順序を表す値 (次のように: )TimetableID
によって順序付けられます。時刻表へ は StationID の駅に に到着し、 に出発します。その駅はこのルートの駅です (は の ID であり、このクエリでは重要ではありません)。SN
xxxxx, 1111, 3, 8:15, 8:20, 9999
1111
8:15
9999
8:20
3rd
xxxxx
LinePath
最後に、私の質問は、SQL を使用して次のスキーマのデータを取得するにはどうすればよいかということです。
FinalStationName
、Departure(from selected station)
、Regime
.