0

我有以下数据库表,其中包含有关公共交通系统的信息:

  • 车站(ID、名称)
  • 骑行(id,lineName)
  • RideStop(rideId,stationId,sequenceNumber,到达时间,离开时间)

RideStop 引用了 Ride 和 Station。通过 sequenceNumber 对 RideStops 进行排序时,您将获得此特定骑行的路径。

我需要从特定车站出发的所有游乐设施中获取路径。我可以通过执行获得完整的路径

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 回答