首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >选择每隔一天选择公交车行程方向

选择每隔一天选择公交车行程方向
EN

Stack Overflow用户
提问于 2011-12-13 20:34:39
回答 1查看 189关注 0票数 0

我正在开发一个公交车车票预订系统。在这里,我已经为所有路线制作了表格,并在表格中添加了bus_number、fields等字段。现在我们的公交车每隔一天反向行驶,也就是说,如果一辆公交车在2011年12月21日从X->Y行驶,那么下一天同一辆公交车将行驶Y->X。那么,如何获得公交车的方向呢?如果我为每个公交车服务提供商制作了表格,并添加公交车号码并添加一个标识符,比如' to‘作为日期,我想就有可能知道所有未来几天的状态。我不知道这是不是一个好主意,所以请帮助我。

EN

回答 1

Stack Overflow用户

发布于 2011-12-13 20:48:27

如果不知道现有表的确切细节,就很难提供一个明确的解决方案。无论如何,这里有一个建议,告诉你如何保持公交车的停靠点和票价:

代码语言:javascript
复制
CREATE TABLE `bus` (
  `id` int unsigned not null primary key auto_increment,
  `bus_number` varchar(55) not null,
   UNIQUE KEY `busUidx1` (`bus_number`)
) ENGINE=InnoDB;

CREATE TABLE `bus_stop` (
  `id` int unsigned not null primary key auto_increment,
  `stop_description` varchar(250) not null,
  UNIQUE KEY `bus_stopUidx1` (`stop_description`)
) ENGINE=InnoDB;

CREATE TABLE `bus_route` (
  `id` int unsigned not null primary key auto_increment,
  `bus_id` int unsigned not null,
  `route_date` date not null,
  `bus_start_stop_id` int unsigned not null,
  `bus_end_stop_id` int unsigned not null,
  `fare` decimal (10,2) not null,
   UNIQUE KEY `bus_stopUidx1` (`bus_id`,`route_date`),
CONSTRAINT `fk_bus_route_bus_fk1` FOREIGN KEY (`bus_id`) REFERENCES `bus` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
CONSTRAINT `fk_bus_route_stop_fk1` FOREIGN KEY (`bus_start_stop_id`) REFERENCES `bus_stop` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
CONSTRAINT `fk_bus_route_stop_fk2` FOREIGN KEY (`bus_end_stop_id`) REFERENCES `bus_stop` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB;

使用此模型,您应该能够存储公交车列表(在bus表中)、所有可能的站点列表(在bus_stop表中)和给定日期的公交车路线。它还将允许您灵活地打破“公交车从X>Y旅行,然后总是从Y>X返回”的规则,如果我过去乘坐的公交车是任何有用的东西,可能会被证明是有用的;-)

编辑

因此,这里有一些示例数据来尝试进一步说明我的答案:

代码语言:javascript
复制
insert into bus (bus_number) values ('Red Bus 1');
insert into bus (bus_number) values ('Red Bus 2');
insert into bus (bus_number) values ('Yellow Bus 1');
insert into bus (bus_number) values ('Yellow Bus 2');

insert into bus_stop (stop_description) values ('Stop 1');
insert into bus_stop (stop_description) values ('Stop 2');
insert into bus_stop (stop_description) values ('Stop 3');
insert into bus_stop (stop_description) values ('Stop 4');

insert into bus_route (bus_id,route_date,bus_start_stop_id,bus_end_stop_id,fare)
values (
(select id from bus where bus_number = 'Red Bus 1'),
'2011-12-11',
(select id from bus_stop where stop_description = 'Stop 1'),
(select id from bus_stop where stop_description = 'Stop 2'),
3.45);

insert into bus_route (bus_id,route_date,bus_start_stop_id,bus_end_stop_id,fare)
values (
(select id from bus where bus_number = 'Red Bus 1'),
'2011-12-12',
(select id from bus_stop where stop_description = 'Stop 2'),
(select id from bus_stop where stop_description = 'Stop 1'),
3.45);

insert into bus_route (bus_id,route_date,bus_start_stop_id,bus_end_stop_id,fare)
values (
(select id from bus where bus_number = 'Yellow Bus 1'),
'2011-12-11',
(select id from bus_stop where stop_description = 'Stop 3'),
(select id from bus_stop where stop_description = 'Stop 4'),
1.95);

insert into bus_route (bus_id,route_date,bus_start_stop_id,bus_end_stop_id,fare)
values (
(select id from bus where bus_number = 'Yellow Bus 1'),
'2011-12-12',
(select id from bus_stop where stop_description = 'Stop 4'),
(select id from bus_stop where stop_description = 'Stop 3'),
1.95);

最后是一个将表连接在一起的查询:

代码语言:javascript
复制
select b.bus_number,
       br.route_date,
       bs.stop_description as start,
       be.stop_description as end,
       br.fare
from bus_route br
inner join bus b on b.id = br.bus_id
inner join bus_stop bs on bs.id = br.bus_start_stop_id
inner join bus_stop be on be.id = br.bus_end_stop_id;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8489327

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档