关于数据库查询
我想做一个火车票售票系统,但是在创建数据库的时候碰到了一些麻烦。就是,我要查询两个站点之间都经过了那些站,我不知道怎么创建表。自己创建的表我没法查询,查询不到我想要的结果。
这是我创建的表。
我是使用下面的查询语句,但是得到结果却是一个一个的表。我想把结果仅仅以一个表的形式显示出来
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
----这样就是一个表,而不是多个表了。