通过站站查询出结果,如何把发站的发站时间和到站的到站时间查询出来?
例如:
查询发站济南' 到 到站'北京' 发站的发站时间和到站的到站时间select 发站时间?,到站时间?
from ti inner join tb on ti.id=tb.id
where ti.车次 in
(
select a.车次 from
(select * from tb a where 站名='济南') a,
(select * from tb a where 站名='北京') b
where a.车次=b.车次 and a.id<b.id
)
注:发站时间和到站时间都在表tb中
请大家把上面的代码按要求补充完整
例如:
查询发站济南' 到 到站'北京' 发站的发站时间和到站的到站时间select 发站时间?,到站时间?
from ti inner join tb on ti.id=tb.id
where ti.车次 in
(
select a.车次 from
(select * from tb a where 站名='济南') a,
(select * from tb a where 站名='北京') b
where a.车次=b.车次 and a.id<b.id
)
注:发站时间和到站时间都在表tb中
请大家把上面的代码按要求补充完整
id stationno checi name arrtime starttime distance costtime
36523 1 T835 广州 始发站 15:02 0 当日
36524 2 T835 广州东 15:12 15:17 8 当日
36525 3 T835 石龙 15:45 15:47 69 当日
36526 4 T835 樟木头 16:06 16:08 103 当日
36527 5 T835 深圳 16:33 终点站 147 当日
36528 1 T836 深圳 始发站 16:53 0 当日
36529 2 T836 樟木头 17:18 17:20 44 当日
36530 3 T836 广州东 18:01 18:03 139 当日
36531 4 T836 广州 18:13 终点站 147 当日
36532 1 T837 广州 始发站 18:28 0 当日
--trainifo表
id checi startstation to distance costtime
2248 T854 深圳 广州 147 当日
2249 T855 广州 深圳 147 当日
2250 T856 深圳 广州东 139 当日
2251 T857 广州东 深圳 139 当日
2252 T858 深圳 广州东 139 当日
2253 T859 广州东 深圳 139 当日
2254 T860 深圳 广州东 139 当日
2255 T861 广州东 深圳 139 当日
2256 T862 深圳 广州 147 当日
2257 T863 广州 深圳 147 当日
2258 T864 深圳 广州东 139 当日--实现站站查询的sql查询语句如下:select *, a.distance-b.distance as 距离
from stationinfo a,stationinfo b
where a.checi=b.checi and a.name='站1' and b.name='站2';
CREATE TABLE T_Line(busID nvarchar(20),stationID nvarchar(20),staTionName nvarchar(50),stationSort int)
INSERT T_Line
SELECT N'B0280017',N'S0280030',N'荷花池',1 UNION ALL
SELECT N'B0280017',N'S0280028',N'火车北站',2 UNION ALL
SELECT N'B0280017',N'S0280289',N'二环北二段',3 UNION ALL
SELECT N'B0280018',N'S0280011',N'人名北路',1 UNION ALL
SELECT N'B0280018',N'S0280028',N'火车北站',2 UNION ALL
SELECT N'B0280018',N'S0280213',N'五块石',3 UNION ALL
SELECT N'B0280019',N'S0280013',N'五块石',1 UNION ALL
SELECT N'B0280019',N'S0280014',N'二环路东二段',2 UNION ALL
SELECT N'B0280019',N'S0280215',N'二环东三段',3
GO--乘车线路查询存储过程
CREATE PROC p_qry
@Station_Start nvarchar(10),
@Station_Stop nvarchar(10)
AS
SET NOCOUNT ON
DECLARE @l int
SET @l=0
SELECT busID,staTionName,
Line=CAST('('+RTRIM(busID)+': '+RTRIM(staTionName) as nvarchar(4000)),
stationSort=stationSort,
[Level]=@l
INTO # FROM T_Line
WHERE staTionName=@Station_Start
WHILE @@ROWCOUNT>0
AND NOT EXISTS(SELECT * FROM # WHERE staTionName=@Station_Stop)
BEGIN
SET @l=@l+1
INSERT #(Line,busID,staTionName,stationSort,[Level])
SELECT
Line=a.Line+CASE
WHEN a.busID=b.busID THEN N'->'+RTRIM(b.staTionName)
ELSE N') ∝ ('+RTRIM(b.busID)
+N': '+RTRIM(b.staTionName) END,
b.busID,b.staTionName,b.stationSort,@l
FROM # a,T_Line b
WHERE a.[Level]=@l-1
AND(a.staTionName=b.staTionName AND a.busID<>b.busID
OR a.busID=b.busID AND(
a.stationSort=b.stationSort+1
OR
a.stationSort=b.stationSort-1))
AND LEN(a.Line)<4000
AND PATINDEX('%[ >]'+b.staTionName+'[-)]%',a.Line)=0
END
SELECT N'起点站'=@Station_Start
,N'终点站'=@Station_Stop
,N'乘车线路'=Line+N')'
FROM #
WHERE [Level]=@l
AND staTionName=@Station_Stop
IF @@ROWCOUNT =0 --如果未有可以到达的线路,则显示处理结果表备查
SELECT * FROM #
GO--调用
EXEC p_qry N'荷花池',N'二环东三段'
drop proc p_qry
drop table T_Line/* 结果起点站 终点站 乘车线路
---------- ---------- ------------------------------------------------------------
荷花池 二环东三段 (B0280017: 荷花池->火车北站) ∝ (B0280018: 火车北站->五块石) (B0280019: 五块石->二环路东二段->二环东三段)
*/
from tb a join tb b
on a.车次=b.车次 and a.序列<b.序列 and a.站名='济南' and a.站名='北京'