php mysql计算连续的行

时间:2012-01-29 17:40:01

标签: php mysql

我正在写一个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”上获得了继承。

1 个答案:

答案 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选择编辑到查询中