微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在mysql数据库中存储公交路线的方向?

如何解决如何在mysql数据库中存储公交路线的方向?

我有 3 个表:Route、Bus_stop、Route-Bus_stop
路线:id,工作日,周末
Bus_stop: id,name
Route-Bus_stop:主键(顺序,时间),外键:idRoute,idBus_stop

Insert into Route(id,weekday,weekend) values(1,1,1);
Insert into Route(id,weekend) values(2,1);

Insert into Bus_stop(id,name) values(1,'A');
Insert into Bus_stop(id,name) values(2,'B');
Insert into Bus_stop(id,name) values(3,'C');

Insert into Route-Bus_stop(idRoute,idBus_stop,routeo_rder,stoptime) values(1,7:00);
Insert into Route-Bus_stop(idRoute,route_order,2,7:10);
Insert into Route-Bus_stop(idRoute,3,7:30);

Insert into Route-Bus_stop(idRoute,stoptime) values(2,15:00);
Insert into Route-Bus_stop(idRoute,15:10);
Insert into Route-Bus_stop(idRoute,15:20); 
-- this is only an example,my database is bigger.

其中一条路线是 A -> B -> C,另一条路线是 C->B->A
如果用户想从 A 到 C,我如何只显示其中一条路线,其中所有公交车站都到达目的地?
我写了这个查询,但这显示了两条路线。

select *idRoute from Route-Bus_stop where idBus_stop=1 or idBus_stop=3 order by time; // A -> C

这将显示路线 A->C 和 C-> A。但我只想要 A->C

解决方法

首先不要使用 ORDER 或 TIME 等保留字作为列名,因此您需要在所有时间段使用反引号

如果没有反引号,Route-Bus_stop 也是无效的。

对于您的查询,您需要一个自连接来获取起点和终点

CREATE TABLE Route_Bus_stop (
idRoute int,idBus_stop int,`order` int,`time` varchar(10))
Insert into Route_Bus_stop(idRoute,idBus_stop,`order`,`time`) values(1,1,'7:00');
Insert into Route_Bus_stop(idRoute,2,'7:10');
Insert into Route_Bus_stop(idRoute,3,'7:30');

Insert into Route_Bus_stop(idRoute,`time`) values(2,'15:00');
Insert into Route_Bus_stop(idRoute,'15:10');
Insert into Route_Bus_stop(idRoute,'15:20'); 
SELECT r1.idRoute,r1.idBus_stop,r2.idBus_stop,r1.`time`,r2.`time`
FROM Route_Bus_stop r1 INNER JOIN Route_Bus_stop r2
ON r1.idRoute = r2.idRoute AND r1.`order` < r2.`order`
WHERE r1.idBus_stop = 1 
AND r2.idBus_stop = 3
idRoute | idBus_stop | idBus_stop | time | time
------: | ---------: | ---------: | :--- | :---
      1 |          1 |          3 | 7:00 | 7:30

dbfiddle here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。