我正在编写一个 PHP 脚本来确定卡车的燃油使用量。我为此使用 mysql 数据库表。
卡车可以在多个地点获取燃料,例如 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
等等。
有了数据库中的这些信息,只需使用“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”上获得了继承。
最佳答案
将 ORDER BY 添加到 SQL select 语句
ORDER BY odometer ASCENDING
编辑
好的!我想我现在明白你的问题了。
SELECT t1.truck_id,
t1.odometer AS km1,
MIN(t2.odometer) AS km2
FROM fueldispensed AS t1,
fueldispensed AS t2
WHERE t2.truck_id = t1.truck_id
AND T2.odometer > t1.odometer
ORDER BY t1.truck_id,
t1.odometer
GROUP BY t1.truck_id,
t1.odometer
应该给你一些有用的东西,尽管效率不高
根据需要将您的 Truck_id 选择编辑到查询中
关于php mysql 计算连续行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9055228/