通过站站查询出结果,如何把发站的发站时间和到站的到站时间查询出来?
例如:
查询发站济南' 到 到站'北京' 发站的发站时间和到站的到站时间select 发站时间?,到站时间?
from ti inner join tb on ti.id=tb.id
where ti.车次 in
(
select a.车次 from 
(select * from tb a where 站名='济南') a,
(select * from tb a where 站名='北京') b 
where a.车次=b.车次 and a.id<b.id
)
注:发站时间和到站时间都在表tb中
请大家把上面的代码按要求补充完整

解决方案 »

  1.   

    --stationinfo 表
    id    stationno    checi    name    arrtime    starttime    distance    costtime
    36523    1    T835    广州    始发站    15:02    0    当日
    36524    2    T835    广州东    15:12    15:17    8    当日
    36525    3    T835    石龙    15:45    15:47    69    当日
    36526    4    T835    樟木头    16:06    16:08    103    当日
    36527    5    T835    深圳    16:33    终点站    147    当日
    36528    1    T836    深圳    始发站    16:53    0    当日
    36529    2    T836    樟木头    17:18    17:20    44    当日
    36530    3    T836    广州东    18:01    18:03    139    当日
    36531    4    T836    广州    18:13    终点站    147    当日
    36532    1    T837    广州    始发站    18:28    0    当日
    --trainifo表
    id    checi    startstation    to    distance    costtime
    2248    T854    深圳    广州    147    当日
    2249    T855    广州    深圳    147    当日
    2250    T856    深圳    广州东    139    当日
    2251    T857    广州东    深圳    139    当日
    2252    T858    深圳    广州东    139    当日
    2253    T859    广州东    深圳    139    当日
    2254    T860    深圳    广州东    139    当日
    2255    T861    广州东    深圳    139    当日
    2256    T862    深圳    广州    147    当日
    2257    T863    广州    深圳    147    当日
    2258    T864    深圳    广州东    139    当日--实现站站查询的sql查询语句如下:select *, a.distance-b.distance as 距离
    from stationinfo a,stationinfo b
    where a.checi=b.checi and a.name='站1' and b.name='站2';
      

  2.   

    起点站  终点站     乘车线路  --解答三
    CREATE TABLE T_Line(busID nvarchar(20),stationID nvarchar(20),staTionName nvarchar(50),stationSort  int)
    INSERT T_Line 
    SELECT N'B0280017',N'S0280030',N'荷花池',1 UNION ALL
    SELECT N'B0280017',N'S0280028',N'火车北站',2 UNION ALL
    SELECT N'B0280017',N'S0280289',N'二环北二段',3 UNION ALL
    SELECT N'B0280018',N'S0280011',N'人名北路',1 UNION ALL
    SELECT N'B0280018',N'S0280028',N'火车北站',2 UNION ALL
    SELECT N'B0280018',N'S0280213',N'五块石',3 UNION ALL
    SELECT N'B0280019',N'S0280013',N'五块石',1 UNION ALL
    SELECT N'B0280019',N'S0280014',N'二环路东二段',2 UNION ALL
    SELECT N'B0280019',N'S0280215',N'二环东三段',3 
    GO--乘车线路查询存储过程
    CREATE PROC p_qry
    @Station_Start nvarchar(10),
    @Station_Stop  nvarchar(10)
    AS
    SET NOCOUNT ON
    DECLARE @l int
    SET @l=0
    SELECT busID,staTionName,
    Line=CAST('('+RTRIM(busID)+': '+RTRIM(staTionName) as nvarchar(4000)),
    stationSort=stationSort,
    [Level]=@l
    INTO # FROM T_Line
    WHERE staTionName=@Station_Start
    WHILE @@ROWCOUNT>0 
    AND NOT EXISTS(SELECT * FROM # WHERE staTionName=@Station_Stop)
    BEGIN
    SET @l=@l+1
    INSERT #(Line,busID,staTionName,stationSort,[Level])
    SELECT 
    Line=a.Line+CASE
    WHEN a.busID=b.busID THEN N'->'+RTRIM(b.staTionName)
    ELSE N') ∝ ('+RTRIM(b.busID)
    +N': '+RTRIM(b.staTionName) END,
    b.busID,b.staTionName,b.stationSort,@l
    FROM # a,T_Line b
    WHERE a.[Level]=@l-1
    AND(a.staTionName=b.staTionName AND a.busID<>b.busID
    OR a.busID=b.busID AND(
    a.stationSort=b.stationSort+1
    OR
    a.stationSort=b.stationSort-1))
    AND LEN(a.Line)<4000
    AND PATINDEX('%[ >]'+b.staTionName+'[-)]%',a.Line)=0
    END
    SELECT N'起点站'=@Station_Start
    ,N'终点站'=@Station_Stop
    ,N'乘车线路'=Line+N')' 
    FROM # 
    WHERE [Level]=@l 
    AND staTionName=@Station_Stop
    IF @@ROWCOUNT =0 --如果未有可以到达的线路,则显示处理结果表备查
    SELECT * FROM #
    GO--调用
    EXEC p_qry N'荷花池',N'二环东三段'
    drop proc p_qry
    drop table T_Line/*    结果起点站        终点站        乘车线路                                                                                                                                                                                                                                                             
    ---------- ---------- ------------------------------------------------------------
    荷花池        二环东三段      (B0280017: 荷花池->火车北站) ∝ (B0280018: 火车北站->五块石)  (B0280019: 五块石->二环路东二段->二环东三段)
    */
      

  3.   

    select a.车次,a.站名 as 始站,b.站名 as 到站,a.发时 ,b.到时
    from tb a join tb b 
    on a.车次=b.车次 and a.序列<b.序列 and a.站名='济南' and a.站名='北京'
      

  4.   

    select (select 发站时间 from tb where 站名='济南') as 发站时间,(select 到站时间 from tb where 站名='北京') as 到站时间不知道这样写正确否