日期:2014-05-17  浏览次数:20554 次

关于数据库查询
我想做一个火车票售票系统,但是在创建数据库的时候碰到了一些麻烦。就是,我要查询两个站点之间都经过了那些站,我不知道怎么创建表。自己创建的表我没法查询,查询不到我想要的结果。
这是我创建的表。
我是使用下面的查询语句,但是得到结果却是一个一个的表。我想把结果仅仅以一个表的形式显示出来
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
------解决方案--------------------
你这查询明显就是一次一次地查询嘛,肯定一个一个表咯。你这个其实用cte就可是拉,没必要搞那么多事,1000万条数据你循环1000万次啊?
------解决方案--------------------
加多一个level字段就行啦。比如D126 汉口 1,D126 驻马店 2,D126 漯河 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
----这样就是一个表,而不是多个表了。