求实现火车根据始发站终点站查询车次和余票及座位信息的思路

嘉凌天下 2017-11-08 08:50:17
假设有一个车次1经过5个站,站点1,站点2,站点3,站点4,站点5(另外有一个车次2,经过站点3,站点4,站点6)
有3个座位,座位1,座位2,座位3
有乘客,买了站点1到站点3的座位1,站点4到站点5的座位1,
站点2到站点4的座位2,站点1到站点2的座位3,站点3到站点5的座位3,
自己确定数据库表的结构
问:怎么查到站点3到站点4的车次信息,它的余票,哪个座位有余票
需要实现思路
...全文
416 8 点赞 打赏 收藏 举报
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
嘉凌天下 2017-11-11
大家帮我想一下,要怎样实现 查询 某时间 某车次 株洲到玉山 的余票, 查询 某时间 某车次 株洲到玉山 的座位 的思路
  • 打赏
  • 举报
回复
JiaLingTianXia 2017-11-10
查询 某时间 某车次 株洲到玉山 的余票, 查询 某时间 某车次 株洲到玉山 的座位
  • 打赏
  • 举报
回复
嘉凌天下 2017-11-10
我的数据库表

表中的数据



--车次查询(K2775)
--查询的列 (车次号,始发站,终点站,经过的站点,
--每个站点的到达时间,发车时间,停留时间)
select t.id 编号,t.trainnum 车次,t.departure 始发站,t.destination 终点站

from trainnum t,TrainNumDetails td
where t.trainnum='K2775' and td.tid=t.id

select station 经过站点,arriveTime 到达时间,stayTime 发车时间,
datediff(mi,arriveTime,stayTime) 停留时间
from TrainNumDetails
where tid=1

----------
select t.id 编号,t.trainnum 车次,t.departure 始发站,t.destination 终点站,
td.station 经过站点,td.arriveTime 到达时间,td.startTime 发车时间,
datediff(mi,arriveTime,startTime) 停留时间
from TrainNumDetails td,trainnum t
where td.tid=t.id and t.trainnum='K2775'
and stayTime between '2017-11-07 00:00:00' and '2017-11-07 23:59:59'


--站站查询
-- 查询 2017/11/7 株洲到玉山 的车次信息
--查询 编号,车次号,始发站,终点站,出发时间,到达时间,车程多少分钟

select t.id 编号,t.trainNum 车次,t.departure 始发站,
t.destination 终点站,q.stayTime 出发时间,z.arriveTime 到达时间,
datediff(mi,q.stayTime,z.arriveTime) 车程时间
from TrainNum t,TrainNumDetails q,TrainNumDetails z
where q.station='株洲' and z.station='玉山' and q.tid=z.tid
and q.tid=t.id
and q.startTime between '2017-11-07 00:00:00' and '2017-11-07 23:59:59'

  • 打赏
  • 举报
回复
嘉凌天下 2017-11-10
假设有一个车次1经过5个站,站点1,站点2,站点3,站点4,站点5(另外有一个车次2,经过站点3,站点4,站点6)
有3个座位,座位1,座位2,座位3
有乘客,买了站点1到站点3的座位1,站点4到站点5的座位1,
站点2到站点4的座位2,站点1到站点2的座位3,站点3到站点5的座位3,
自己确定数据库表的结构

我问的问题是
站点3到站点4的车次信息?
站点3到站点4的余票?
站点3到站点4有哪些座位?
需要实现思路
需要哪些表,哪些列
SQL语句怎么写
  • 打赏
  • 举报
回复
嘉凌天下 2017-11-10
线路表L是干什么用的,大概有哪些列?
  • 打赏
  • 举报
回复
maradona1984 2017-11-09
SELECT SEAT.* FROM L,SEAT WHERE L.ID = '线路' AND NOT EXISTS(SELECT 1 FROM SEAT_S WHERE AND SEAT_S.SID = '站点' AND SEAT_S.SEAT_ID = SEAT.ID ) 楼上sql有误
  • 打赏
  • 举报
回复
maradona1984 2017-11-09
如果简单设计,站点表S,线路表L,站点线路中间表S_L,座位SEAT(外键线路表),座位站点中间表SEAT_S(该站点该作为是否有人,冗余线路id) 站点表,线路表,站点线路中间表,座位(外键线路表)数据要初始化 买票时票途径站点1,2,3,那1,2这个站有人,存入座位站点中间表 站点间车次信息,站点表,线路表,站点线路中间表关联即可 它的余票,车次座位总数-该站点该车次有座人数,两个子查询(此处要优化性能的话,可以将数据冗余,车次座位数冗余到车次上,站点线路中间表可以冗余剩余票数,已售票数,数据更新时同步冗余数据,比如买票退票需要更新余票,新增座位同步更新车次座位数) 哪个座位有余票,查询站点在该车次没有售出的座位即可,大概sql,SELECT SEAT.* FROM L,SEAT WHERE L.ID = '线路' AND NOT EXISTS(SELECT 1 FROM SEAT_S WHERE AND SEAT_S.SID = '站点' )
  • 打赏
  • 举报
回复
嘉凌天下 2017-11-09
给站点表加一个余票列,购买火车票时余票减一,查询起点站到目的站的余票是每个站点的最小余票
  • 打赏
  • 举报
回复
相关推荐
发帖
Java
加入

4.8w+

社区成员

Java相关技术讨论
申请成为版主
帖子事件
创建了帖子
2017-11-08 08:50
社区公告
暂无公告