参考:http://topic.csdn.net/u/20081118/10/f5f63827-2f79-49e2-b34b-78dd67e35ef2.html 8楼我的回复.

解决方案 »

  1.   

    这个问题我记得在sqlserver版的精华里有过例子,楼主可以搜索一下
      

  2.   

    select a.f8 车次,a.f5 发站,a.f15 出发时间,b.f5 到站,b.f14 到达时间 from stoptime a,stoptime b 
    where a.f3 = b.f3 and a.f5 = '襄樊' and b.f5 = '宜昌' and b.f4 > a.f4
    /*
    车次     发站     出发时间  到站    到达时间
    -----------------------------------------------
    L360 襄樊 1130 宜昌 1530
    K49 襄樊 0732 宜昌 1033
    1473 襄樊 1005 宜昌 1308
    (所影响的行数为 3 行)*/
      

  3.   

    将第二张表和第三张表合在一起,形如下面:
    表1:其中“标记”字段表示该站为起点站(1),中间站(2),和终点站(3)
    ID 车次 本站ID 本车站名 本车站时刻 下一车ID 下一车站距离 硬座价格 硬卧价格上 硬卧价格中 硬卧价格下 软卧价格上 软卧价格下 标记
    1 T1 1 北京 8:00 2 200 10 20 23 25 30 34 1
    2 T1 2 天津 8:30 3 300 11 12 13 23 35 45 2
    3 T1 3 石家庄 9:00 4 400 12 13 14 25 36 34 2
    4 T1 4 郑州 9:30 0 3
    5 T2 1 吉林 9:00 2 200 10 20 23 25 30 34 1
    6 T2 2 长春 9:30 3 300 11 12 13 23 35 45 2
    7 T2 3 哈尔滨 10:00 4 400 12 13 14 25 36 34 2
    8 T2 4 北京 10:30 5 340 34 45 43 43 54 34 2
    9 T2 5 天津 11:00 6 200 10 20 23 25 30 34 2
    10 T2 6 石家庄 11:30 7 300 11 12 13 23 35 45 2
    11 T2 7 郑州 12:00 8 400 12 13 14 25 36 34 2
    12 T2 8 西安 12:30 0 3
    该表中每一行都记录的是当前车次本站与下站之间的信息,
    如果要查询两个任何站间的列车信息,比如北京到郑州的所有列车信息,可以按以下思路处理:
    1,从该表中查询经过北京和郑州的车次和其站ID,结果是T1,1,4:T2,4,72,将该表与自己做自身连接查询,前者为起点站表,后者为终点站表,结果上面的结果就可以得到经过这两个地方的具体时刻信息:
    SELECT 表1.车次, 表1.本车站名, 表1.本车站时刻, 表1_1.本车站名, 表1.下一车站距离, 表1.硬座价格
    FROM 表1,表1 AS 表1_1 ,(SELECT 车次, 本站ID, 本车站名 FROM 表1 WHERE 本车站名="北京") AS 起点站 ,(SELECT 车次, 本站ID, 本车站名 FROM 表1 WHERE 本车站名="郑州") AS 终点站
    WHERE (表1.车次 = 表1_1.车次) AND (表1.下一车ID = 表1_1.本站ID) AND 表1.车次=起点站.车次 AND 表1.车次=终点站.车次 AND 表1.本站ID>=起点站.本站ID AND 表1_1.本站ID<=终点站.本站ID
    查询结果如下:
    车次 表1.本车站名 本车站时刻 表1_1.本车站名 下一车站距离 硬座价格
    T1 北京 8:00 天津 200 10
    T1 天津 8:30 石家庄 300 11
    T1 石家庄 9:00 郑州 400 12
    T2 北京 10:30 天津 340 34
    T2 天津 11:00 石家庄 200 10
    T2 石家庄 11:30 郑州 300 113,如果还需要计算从北京到郑州的总票价或总里程,直接将上面的查询结果进行汇总即可。搞定。
      

  4.   

    肯定应该有一张名为trainInforamtion的表,包括所有的车次信息,以车次为主键这样实现车次查询只需要输入车次,然后从trainInforamtion表中查询即可:select * from trainInformation where 车次 = 所输入车次现在的问题:1:怎么实现车站所有车次查询.我的思路是对每个车站建立表,表名应该是车站名,这样在查询的时候只用:select * from 车站名即可可是(1):这里车站名是用户输入的是个变量呀.怎么用做表名.    (2):全国有几千个城市,这里不要建立上几千个表呀2:输入两个车站,查询去两个车站之间的所有车次.没有思路,越想越乱
      

  5.   

    肯定应该有一张名为trainInforamtion的表,包括所有的车次信息,以车次为主键这样实现车次查询只需要输入车次,然后从trainInforamtion表中查询即可:select * from trainInformation where 车次 = 所输入车次现在的问题:1:怎么实现车站所有车次查询.我的思路是对每个车站建立表,表名应该是车站名,这样在查询的时候只用:select * from 车站名即可可是(1):这里车站名是用户输入的是个变量呀.怎么用做表名.    (2):全国有几千个城市,这里不要建立上几千个表呀2:输入两个车站,查询去两个车站之间的所有车次.没有思路,越想越乱
      

  6.   


    车次表(table_A)
    Id 车次 始发站 终点站 列车类型
    1 T202 三亚 北京 空调特快 行驶明细表(table_B)
    id Id1(与table_A关联) 车站 到时 发时 里程 时速 一等 上卧 中卧
    1 1 三亚 19:28 0 98 0 0 0
    2 1 东方 20:45 20:48 157 122 24 70 75
    3 1 海口 22:41 22:53 363 109 54 100 105这样来设计,并不需要用到几千的表来做的,比如你查从东方到海口时,你就查询table_b来查询就可以了,而且反查询table_A,至于票价两个地方相减就可以了,也可以得到明细出来。
      

  7.   

    主要4张表:
    1 站点表,包括所有站点,2列(ID+站点名)。
    2车次表,包括所有车次,2列(ID+车次)。
    3车次站点组合表,报考哪个车次在哪个站点停靠,3列(ID+车次ID+站点ID)。//该列也可以将该站属于该次车的第几站一块存入。
    --
    4对表3的详细描述,包括从上站到该站的各种票价和里程。
    ---
    我的思路是这样,你试试。
      

  8.   

    没什么好研究的  So Easy!