查询限售站以及票数的问题 我详细说明一下数据库中的表 1. trainInfo(基本信息表) 列车ID 车次 日期 始发站 终点站 限售站 硬座 硬卧 软座 软卧 站票
190000140823 1405 20090722 通化 青岛 青岛 0 45 0 3 72
190000140823 1405 20090722 通化 青岛 青州市 0 0 0 0 1 2.trainDetails(详细信息表) 列车ID 序列 站名 车次 到时 发时
190000140823 19 天津 1405 0753 0802
190000140823 20 沧州 1405 0921 0924
190000140823 21 泊头 1405 1019 1022
190000140823 22 德州 1405 1117 1120
190000140823 23 禹城 1405 1203 1205
190000140823 24 晏城 1405 1219 1221
190000140823 25 济南东 1405 1255 1308
190000140823 26 淄博 1405 1407 1409
190000140823 27 青州市 1405 1435 1437
190000140823 28 潍坊 1405 1524 1528
190000140823 29 高密 1633 1700
190000140823 30 青岛 1405 1813 1813
要求:我使用站站查询:从“A”到“B”,查“B”站后面的所有限售站以及对应的票数 例如:
我使用站站查询:从“济南东”到“淄博”,查“淄博”站后面的所有限售站以及对应的票数
通过查询我们知道从“济南东”到“淄博”,有一辆ID为190000140823的火车
从trainInfo表可以看出ID为190000140823的火车有两个限售站:青州市、青岛
从trainDetails表可以看出”淄博“站后面的限售站是青州市和青岛
所以查询结果应该为: 列车ID 车次 日期 始发站 终点站 限售站 硬座 硬卧 软座 软卧 站票
190000140823 1405 20090722 通化 青岛 青岛 0 45 0 3 72
190000140823 1405 20090722 通化 青岛 青州市 0 0 0 0 1 再比如,查询从“济南东”到“潍坊”,“潍坊”站后面的限售站是青岛
大家帮忙写出查询语句来!
还有,触发器专家,现身吧!
190000140823 1405 20090722 通化 青岛 青岛 0 45 0 3 72
190000140823 1405 20090722 通化 青岛 青州市 0 0 0 0 1 2.trainDetails(详细信息表) 列车ID 序列 站名 车次 到时 发时
190000140823 19 天津 1405 0753 0802
190000140823 20 沧州 1405 0921 0924
190000140823 21 泊头 1405 1019 1022
190000140823 22 德州 1405 1117 1120
190000140823 23 禹城 1405 1203 1205
190000140823 24 晏城 1405 1219 1221
190000140823 25 济南东 1405 1255 1308
190000140823 26 淄博 1405 1407 1409
190000140823 27 青州市 1405 1435 1437
190000140823 28 潍坊 1405 1524 1528
190000140823 29 高密 1633 1700
190000140823 30 青岛 1405 1813 1813
要求:我使用站站查询:从“A”到“B”,查“B”站后面的所有限售站以及对应的票数 例如:
我使用站站查询:从“济南东”到“淄博”,查“淄博”站后面的所有限售站以及对应的票数
通过查询我们知道从“济南东”到“淄博”,有一辆ID为190000140823的火车
从trainInfo表可以看出ID为190000140823的火车有两个限售站:青州市、青岛
从trainDetails表可以看出”淄博“站后面的限售站是青州市和青岛
所以查询结果应该为: 列车ID 车次 日期 始发站 终点站 限售站 硬座 硬卧 软座 软卧 站票
190000140823 1405 20090722 通化 青岛 青岛 0 45 0 3 72
190000140823 1405 20090722 通化 青岛 青州市 0 0 0 0 1 再比如,查询从“济南东”到“潍坊”,“潍坊”站后面的限售站是青岛
大家帮忙写出查询语句来!
还有,触发器专家,现身吧!
insert @trainInfo select '190000140823', '1405', '20090722', '通化', '青岛', '青州市', 0 , 0 , 0 , 0 , 1 declare @trainDetails table(列车ID varchar(12),序列 int,站名 varchar(10), 车次 varchar(4),到时 varchar(4),发时 varchar(4))
insert @trainDetails select '190000140823', 19 ,'天津' ,'1405' ,'0753' ,'0802'
insert @trainDetails select '190000140823', 20 ,'沧州' ,'1405' ,'0921' ,'0924'
insert @trainDetails select '190000140823', 21 ,'泊头' ,'1405' ,'1019' ,'1022'
insert @trainDetails select '190000140823', 22 ,'德州' ,'1405' ,'1117' ,'1120'
insert @trainDetails select '190000140823', 23 ,'禹城' ,'1405' ,'1203' ,'1205'
insert @trainDetails select '190000140823', 24 ,'晏城' ,'1405' ,'1219' ,'1221'
insert @trainDetails select '190000140823', 25 ,'济南东' ,'1405' ,'1255' ,'1308'
insert @trainDetails select '190000140823', 26 ,'淄博' ,'1405' ,'1407' ,'1409'
insert @trainDetails select '190000140823', 27 ,'青州市' ,'1405' ,'1435' ,'1437'
insert @trainDetails select '190000140823', 28 ,'潍坊' ,'1405' ,'1524' ,'1528'
insert @trainDetails select '190000140823', 29 ,'高密' ,'1633' ,'1700' ,''
insert @trainDetails select '190000140823', 30 ,'青岛' ,'1405' ,'1813' ,'1813' declare @Station1 varchar(10),@Station2 varchar(10)
select @Station1='济南东',@Station2='淄博'
select a.* from @trainInfo a
inner join @trainDetails b on a.列车ID=b.列车ID and a.限售站=b.站名
inner join @trainDetails c on a.列车ID=c.列车ID and c.站名=@Station2
where a.列车ID in (
select distinct 列车ID from @trainDetails a
where exists(select 1 from @trainDetails where 列车ID=a.列车ID and 站名=@Station1)
and exists(select 1 from @trainDetails where 列车ID=a.列车ID and 站名=@Station2))
and b.序列>c.序列/*
190000140823 1405 20090722 通化 青岛 青岛 0 45 0 3 72
190000140823 1405 20090722 通化 青岛 青州市 0 0 0 0 1
*/
--如果是潍坊的话。
/*
190000140823 1405 20090722 通化 青岛 青岛 0 45 0 3 72
*/
应该是:and b.序列<c.序列
declare @Station1 varchar(10),@Station2 varchar(10)
select @Station1='济南东',@Station2='淄博'
select a.* from @trainInfo a
inner join @trainDetails b on a.列车ID=b.列车ID and a.限售站=b.站名
inner join @trainDetails c on a.列车ID=c.列车ID and c.站名=@Station2
inner join @trainDetails d on a.列车ID=d.列车ID and d.站名=@Station1
where a.列车ID in (
select distinct 列车ID from @trainDetails a
where exists(select 1 from @trainDetails where 列车ID=a.列车ID and 站名=@Station1)
and exists(select 1 from @trainDetails where 列车ID=a.列车ID and 站名=@Station2))
and b.序列>c.序列 and c.序列>d.序列
这句是干什么的?
哪句是确定站站方向的?
这句我知道是干什么的了!确定站站方向的?是不是把
where exists(select 1 from @trainDetails where 列车ID=a.列车ID and 站名=@Station1)
and exists(select 1 from @trainDetails where 列车ID=a.列车ID and 站名=@Station2))
写成
where exists(select 1 from @trainDetails where 列车ID=a.列车ID and 站名=@Station1)
and exists(select 1 from @trainDetails where 列车ID=a.列车ID and 站名=@Station2)
and b.station_no<c.station_no )若是,可是更改后查不出结果?
c.序列>d.序列,这个是确定火车方向的。
给你都写好了,自己乱改?
你刚接触SQL?