駅に発着するバスの情報が入った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, NameLines - LineID, LineNameTimetable - TimetableID, LineID, Heading, Regime(Regimeバスが運行する曜日を定義します)LinePaths - ID, TimetableID, SN, Arrival, Departure, StationID(SNは、特定のパス上のステーションの順序を定義するシリアル番号です (バスはその特定の順序でそれらのステーションに到着します)。)
したがって、代わりに がTimetable.Heading必要でありStations.Name、ここで問題になります。
その列は、バスが行く最終駅を表す必要があるため (路線ごとに)、最終駅を特定する必要があります (ここでも、選択した駅を通過する路線ごとに)。そのためには、LinePathsテーブルを使用する必要があります。そのテーブル内では、データは によってグループ化されTimetableIDているため、 の同じ値を持つエントリは、バスが駅に到着する順序を表す値 (次のように: )TimetableIDによって順序付けられます。時刻表へ は StationID の駅に に到着し、 に出発します。その駅はこのルートの駅です (は の ID であり、このクエリでは重要ではありません)。SNxxxxx, 1111, 3, 8:15, 8:20, 999911118:1599998:203rdxxxxxLinePath
最後に、私の質問は、SQL を使用して次のスキーマのデータを取得するにはどうすればよいかということです。
FinalStationName、Departure(from selected station)、Regime.