Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SQL查询:选择特定项后的所有引用_Mysql_Sql - Fatal编程技术网

Mysql SQL查询:选择特定项后的所有引用

Mysql SQL查询:选择特定项后的所有引用,mysql,sql,Mysql,Sql,我有以下数据库表,其中包含有关公共交通系统的信息: 车站(id、名称) 骑乘设施(id、线路名称) RideStop(rideId、stationId、sequenceNumber、到达时间、离开时间) RideStop具有对Ride和Station的引用。当按sequenceNumber订购RideStops时,您可以获得此特定乘坐的路径 我需要得到从特定车站出发的所有游乐设施的路径。 我可以通过执行 select * from ridestop rs where rs.ride in

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

  • 车站(id、名称)
  • 骑乘设施(id、线路名称)
  • 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开始?

以下查询使用子查询来查询骑乘设施上每个站点的序列号。然后将其连接回骑乘站,从骑乘开始或之后的序列号中选择所有内容

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

如果StationId是递增顺序。。下面的查询有效

SELECT *
FROM   ridestop rs
WHERE  rs.ride IN (SELECT ride
                   FROM   ttm.ridestop
                   WHERE  ( stationid = 8503000
                            AND stationid > 8503000 ))  

这很好,但电台不一定是按递增顺序排列的。这些线纵横交错在车站网络上,应该是“WHERE(stationid=8503000或stationid>8503000)”?我认为这是正确的方向,但这个查询返回了很多疑问。似乎它将每条记录乘以它的序列号(X行的前4行显示4次)毫无疑问。子查询中的联接应该是on-ride和ridestop,而不是ridestop和ridestop。我解决了这个问题。谢谢,这正是我想要的。如果不需要骑乘设施表中的数据,则可以通过直接连接到骑乘设施顶部表来替换内部子查询。如果车站不是按照下面所示的递增顺序,如何确定“骑乘设施的剩余部分”?特别是正如你上面所说的“按序列号订购骑乘车顶”给出了特定骑乘的路径……我认为你混淆了车站ID和序列号。站点ID是“随机”的,但RideStop记录的序列数是一个不断增加的序列。因此,如果您获取特定站点的RideStop记录,您将获得经过该站点的游乐设施。现在,如果您获取sequenceNumber更高的站点8503000的所有RideStop记录,并按sequenceNumber进行排序,您将获得剩余路径。