我正在写一个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”计算连续行之间的“里程表”差异,很容易找到卡车从一个位置移动到另一个位置的KM或里程数。
问题是:人们可能忘记或无法将值输入程序并在以后执行。数据变成这样:
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”上获得了继承。
答案 0 :(得分:3)
将ORDER BY添加到SQL select语句
ORDER BY odometer ASCENDING
修改强>
OK!我想我现在明白你的问题了。
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选择编辑到查询中