我想做一个火车票售票系统,但是在创建数据库的时候碰到了一些麻烦。就是,我要查询两个站点之间都经过了那些站,我不知道怎么创建表。自己创建的表我没法查询,查询不到我想要的结果。
这是我创建的表。
我是使用下面的查询语句,但是得到结果却是一个一个的表。我想把结果仅仅以一个表的形式显示出来
declare @i int ,@j int,@m int,@n int
set @i=(select StationId from dbo.Trains where StationName='郑州')
set @j=(select StationId from dbo.Trains where StationName='孝感')
set @m=1
set @n=@j-@i+2
while @m<@n
 begin
  select  StationId,StationName,convert(varchar,ArriveTime,108) 
  as 到站时间,convert(varchar,LeaveTime,108)as 离站时间,Distance,Date
  from dbo.Trains
  where StationId=@i
  set @m=@m+1
  set @i=@i+1
 end
 select * from Query

解决方案 »

  1.   

    你这查询明显就是一次一次地查询嘛,肯定一个一个表咯。你这个其实用cte就可是拉,没必要搞那么多事,1000万条数据你循环1000万次啊?
      

  2.   

    加多一个level字段就行啦。比如D126 汉口 1,D126 驻马店 2,D126 漯河 3,以此类推下去
      

  3.   


    --建立临时表,将查询结果插入临时表
    if object_id('Tempdb..#temp') is not null drop table #temp
    create table #temp(...)
    ....begin
       insert into #temp
       select  StationId,StationName,convert(varchar,ArriveTime,108) 
       as 到站时间,convert(varchar,LeaveTime,108)as 离站时间,Distance,Date
       from dbo.Trains
       where StationId=@i
       set @m=@m+1
       set @i=@i+1
      end.....
    select * from #temp
    ----这样就是一个表,而不是多个表了。