php mysql 计算连续行

标签 php mysql

我正在编写一个 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/

相关文章:

java - 将 MySql 与 Servlet 连接用于登录页面

php - 在 PHP 中可以使用多个迭代器吗?

php - 条件 CSS 停止加载内容

php - PHP 中等效的 Objective C 类别

mysql - Codeigniter Active Record - 时间戳的时间大于

mysql - $wpdb SELECT 查询正在返回 COUNT?

php - 根据用户想要访问的页面在另一个页面中加载静态页面

php - php json_encode函数中未显示度数 '°'字符,如何显示?

Python:将 MySQL 日期时间转换为日期时间格式

php - Mysql如何设计我的设置表