【发布时间】:2012-01-30 04:06:53
【问题描述】:
我正在编写一个 php 脚本来确定卡车的燃料使用量。我为此使用 mysql db 表。
卡车可以在多个位置获取燃料,例如 A、B、C、D 位置。 卡车从这些最近的地点之一获取燃料。并且每次卡车加油时,负责人都会输入“油量”和“里程表”的数值进行编程。
sequence_id locations fuelDispensed odometer
1 C 700 8100
2 A 400 9700
3 B 500 15500
4 C 600 17950
等等。
利用 db 提供的这些信息,只需使用“sequence_id”计算连续行之间的“里程表”差异,就很容易找到卡车从一个位置行驶到另一个位置的公里数或英里数。
问题是:人们可能会忘记或无法将值输入程序并稍后再执行。数据变成这样:
sequence_id locations fuelDispensed odometer
1 C 700 8100
2 B 500 15500
3 C 600 17950
4 A 400 9700
在这种情况下,无法根据 sequence_id 在连续行之间进行计算。也许,通过对里程表值进行升序排序,然后在行之间进行连续计算似乎是合乎逻辑的,但我不知道如何做到这一点。
编辑:我的查询是这样的:
SELECT
t1.odometer AS km1,
t2.odometer AS km2,
FROM fueldispensed AS t2, fueldispensed AS t1
WHERE (t1.sequence_id+1= t2.sequence_id) AND (t1.truck_id='$truckid') AND (t2.truck_id='$truckid') ORDER BY t1.sequence_id";
向该查询添加 ORDER BY 无效,因为我在“sequence_id”上获得了继承。
【问题讨论】: