我的 MySQL 数据库中有下表
总线名称
id |busname
路线
id|route_name
时序表
id | bus_id | route_id | trip |direction |bus_time
- 一辆巴士每天包含多次行程
- 每次行程包含 2 个方向 (0|1)
0 表示源到目的地
1 表示目的地到源
现在我想按行程显示数据组,其中bus_id =“some_id”以及每个行程数据的每个页面。如果我点击下一步,那么我需要显示第二次行程数据
BusRouteName |Trip | Departure | Destination|
Newyork 1 8 a.m 10.am
Ausi 1 9 a.m 11.20 a.m
在上面的数据巴士中,第一趟早上 8 点从纽约出发,上午 10 点返回
我在MySQL中尝试了很多查询,但它似乎没有产生正确的输出
SELECT * FROM timings t inner join routes r on t.route_id=r.id inner join busnames b on t.bus_id=b.id where b.id=1
谁能告诉我如何获取基于行程的数据?
最佳答案
也许尝试按 BusRoute 和 Trip 进行分组,并使用 Bus_time 的最小值和最大值来获取出发和目的地时间。
类似这样的东西(未经测试):
SELECT r.route_name, t.trip, min(t.bus_time) as Departure, max(t.bus_time) as Destination FROM timings t
inner join routes r on t.route_id=r.id
inner join busnames b on t.bus_id=b.id
where b.id=1
group by r.route_name, t.trip
如果您有更复杂的条件,您可以按功能查看分区。请参阅https://dev.mysql.com/doc/refman/5.6/en/partitioning-selection.html
关于MYSQL 分组查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32819481/