0

公共交通機関に関する情報を保持する次のデータベーステーブルがあります。

  • ステーション(ID、名前)
  • Ride(id、lineName)
  • RideStop(rideId、stationId、sequenceNumber、arrivalTime、departureTime)

RideStopには、RideとStationへの参照があります。RideStopsをsequenceNumberで注文すると、この特定のライドのパスを取得できます。

特定の駅から出発するすべての乗り物からパスを取得する必要があります。実行することで完全なパスを取得できます

select * 
from ridestop rs 
where rs.ride in (
  SELECT ride FROM ttm.ridestop where stationid = 8503000
)

しかし、私は乗り物がどこから来たのかは気にせず、どこに行くのかだけを気にします。

質問: ステーション8503000から始まる、ライドの残りの部分のみに結果を制限するにはどうすればよいですか?

4

2 に答える 2

2

次のクエリは、乗車中の各駅のシーケンス番号に対するサブクエリを使用します。次に、これをライドストップに戻し、そのシーケンス番号以降のライドからすべてを選択します。

select rs.*
from ridestop rs join
      (SELECT ride, rs.sequenceNumber
       FROM ride r join
            ridestop rs
            on r.ride = rs.ride
       where stationid = 8503000
      ) r
      on rs.ride = r.ride and
         rs.sequenceNumber >= r.sequenceNumber
order by rs.ride, rs.sequenceNumber
于 2012-07-25T14:46:39.243 に答える
0

StationIdが昇順の場合..以下のクエリが機能します

SELECT *
FROM   ridestop rs
WHERE  rs.ride IN (SELECT ride
                   FROM   ttm.ridestop
                   WHERE  ( stationid = 8503000
                            AND stationid > 8503000 ))  
于 2012-07-25T14:48:37.497 に答える