本人初学 特来求教达人  急!两个关于火车信息的表
T_Schedule
ScheduleCode varchar(10)
fromCity varchar(20)
toCity varchar(20)
LeaveTime datetime
ArrivalTime datetime
TrainType varchar(10)
Speed varchar(10)
Distance int
Days int
T_Schedule_Detail
cid int 非空 主键
ScheduleCode varchar(10)
cityName varchar(20)
ArrivalTime datetime
LeaveTime datetime
NumOfSchedule int
Distance int
Days int 问题:若无法从始发站直达终点站  需要中转.. 
      提供 始发站名 和 终点站名  
要求 查询到 所有 能从 A 站到 B 站的中转站名 

解决方案 »

  1.   

    T_Schedule_Detail.ScheduleCode 为T_Schedule.ScheduleCode的外键
      

  2.   

    表一注释 :
    车次号
    始发站
    终点站
    离开时间
    到达时间
    火车类型
    车速
    总里程数
    行驶天数
    表2
    cid 主键ID
    车次号
    本车次路径的站点名
    到达此站点时间
    离开此站点时间
    本站台 在行驶线上的顺序
    已完成 里程数
    已完成 天数
      

  3.   

    表内数据 (部分 不完全)
    表1
    ScheduleCode,fromCity,toCity,LeaveTime,ArrivalTime,   TrainType, Speed,Distance,Days
    T108         北京     海南   
    T989         长沙     重庆
    表2
    cid ScheduleCode cityName ArrivalTime LeaveTime NumOfSchedule Distance Days
    1   T108         北京     11:03       11:30    1               0      0
    2   T108         郑州   12:09       12:30    2               689    1
    3   T108         长沙     18:00       18:05    3               1486   1
    4   T108         海南     14:45       14:45    4                4469  3
    5   T989         长沙     9:00        9:20     1                0     0
    6   T989         重庆      12:00      12:00    2                1445  1
    题目意思 就是 如果  始法站是 北京 终点站是 重庆  如何 找到中转站(长沙)
      

  4.   

    select a.ScheduleCode ,a.cityname ,b.ScheduleCode , b.cityname
    from T_Schedule_Detail a left join T_Schedule_Detail b
         on a.cityName = b.cityName  and a.ScheduleCode <> b.ScheduleCode 
    where exists (select 1 from T_Schedule_Detail 
                  where ScheduleCode = a.ScheduleCode and cityName = '北京') and 
          exists (select 1 from T_Schedule_Detail 
                  where ScheduleCode = b.ScheduleCode and cityName = '重庆)
          
      

  5.   


    --建表(只建立相关字段)
    create table T_Schedule_Detail
    (
    cid int,
    ScheduleCode varchar(4),
    cityName varchar(10)
    )insert into T_Schedule_Detail select 1,   'T108',         '北京'
    insert into T_Schedule_Detail select 2,   'T108',         '郑州'
    insert into T_Schedule_Detail select 3,   'T108',         '长沙'
    insert into T_Schedule_Detail select 4,   'T108',         '海南'
    insert into T_Schedule_Detail select 5,   'T989',         '长沙'
    insert into T_Schedule_Detail select 6,   'T989',         '重庆'--查询
    select a.ScheduleCode ,a.cityname ,b.ScheduleCode , b.cityname
    from T_Schedule_Detail a left join T_Schedule_Detail b
         on a.cityName = b.cityName  and a.ScheduleCode <> b.ScheduleCode 
    where exists (select 1 from T_Schedule_Detail 
                  where ScheduleCode = a.ScheduleCode and cityName = '北京') and 
          exists (select 1 from T_Schedule_Detail 
                  where ScheduleCode = b.ScheduleCode and cityName = '重庆')--结果
    ScheduleCode cityname   ScheduleCode cityname   
    ------------ ---------- ------------ ---------- 
    T108         长沙         T989         长沙(所影响的行数为 1 行)--其意为:乘坐T108次在长沙转T989次