【发布时间】:2015-07-03 23:32:00
【问题描述】:
我正在尝试按从车站出发的时间来订购火车时刻表集,但是当火车经过午夜时会出现问题。
以下是流入我的mysql数据库的数据示例。对于给定的火车时刻表,我有它的基本路线和每个车站的基本出发时间(由 y under sche 标记)。有时,我可能还会收到给定火车时刻表的修改出发时间的更新。
就其本身而言,上述内容不是问题,因为我根据 timeref 订购了我的数据。但是,当火车经过午夜时,我的问题就来了。这是因为我收到的时间是纯 24 小时格式 - 即 01:00
Count Location Trainid Timeref Sche Update
1 London t256 22:10 y
2 Cricklewood t256 23:00 y
3 Luton t256 01:00 y
4 Leicester t256 02:00 y
5 Doncaster r659 06:00 y
6 Luton t256 01:10 y
7 Sheffield y783 05:00 y
我想按以下顺序显示数据。即按照原始时间表的顺序,但卢顿的更新时间为 01:10
London t256 22:10
Cricklewood t256 23:00
Luton t256 01:10
Leicester t256 02:00
我下面的代码工作正常,除了火车穿过午夜的地方
$stmt3=$mysql_link->prepare("SELECT count,trainid,location,timeref,sche,update FROM (SELECT count,trainid,location,timeref,sche,update FROM darwinall WHERE trainid=:trainid ORDER BY count DESC) as temp GROUP BY location ORDER BY timeref ASC");
$stmt3->execute(array(':trainid'=>$trainid));
foreach($stmt3->fetchAll(PDO::FETCH_ASSOC) as $row3) {
echo result.................
}
所以我得到以下结果而不是上面的结果,这是错误的
Luton t256 01:10
Leicester t256 02:00
London t256 22:10
Cricklewood t256 23:00
【问题讨论】:
-
count值是否意味着什么?在我看来,数据库缺少有关停靠顺序的重要信息,这将导致意外错误。 -
计数是接收消息的顺序。但是我知道原始时间表的运行顺序(如果有帮助的话)。它在 sche 下标有 y。所以我知道站的顺序
-
除非您按一个(或多个...)列排序,否则数据库中没有顺序。我也不知道 messages 是什么意思。如果有人进入一条新路线,忘记了停靠点并在稍后发布广告怎么办?你的整个系统崩溃了。
-
@jeroen 在我看来
Count只是一个自动递增的 ID 字段。