我有一个MySQL数据库,该数据库保存来自车辆的OBD-II阅读器的日志数据。 与阅读器交互的应用程序收集了大量(通常超过2,000个)数据点集。 这些数据点集的每一个在表中都有其自己的行,结果如下:

+---------------+----------------------------------+---------------+----+----+-----+
| session       | id                               | time          | kd | kf | ... |
+---------------+----------------------------------+---------------+----+----+-----+
| 1420236074526 | 5cff4a3cc80b22cecb7de85266b25355 | 1420236074534 | 14 | 8  | ... |
| 1420236074526 | 5cff4a3cc80b22cecb7de85266b25355 | 1420236075476 | 17 | 8  | ... |
| 1420236074526 | 5cff4a3cc80b22cecb7de85266b25355 | 1420236075476 | 19 | 8  | ... |
| 1420236074526 | 5cff4a3cc80b22cecb7de85266b25355 | 1420236075476 | 23 | 8  | ... |
| 1420236074526 | 5cff4a3cc80b22cecb7de85266b25355 | 1420236077477 | 25 | 8  | ... |
+---------------+----------------------------------+---------------+---------+-----+

k5kf是车辆数据类型(分别为车速和环境空气温度)。

该表中有两个索引(称为raw_logs ):

  • 会话映射到sessionid
  • id映射到列id

我想做的是获取所有具有相同时间戳的行(例如1420236074526 ),并将它们合并为一个“会话”。 这里的目标是创建一个选择列表,我可以在其中按会话查看数据。 理想情况下,我将输出如下内容:

<select>
  <option>January 1, 2015 - 7:43AM</option>
  <option>January 1, 2015 - 5:15PM</option>
  <option>January 2, 2015, - 7:38AM</option>
  ...
</select>

到目前为止,这是我所拥有的(我正在使用Medoo尝试简化查询):

$session = $database->query("SELECT * FROM raw_logs USE INDEX (session)");

$sessionArray = array();
foreach($session as $session){
  $s_time = $session["session"];
  $sessionArray[$s_time] = array(
    "vehicle_speed" => $session["kd"],
    "ambient_air_temp" => $session["kf"]
  );
} print_r($sessionArray);

这行得通... 我得到了正确的键/值对的会话时间,以及数组下的kdkf ,但是它似乎不想遍历整个过程。 目前,该表中大约有25,000行,但仅返回一些,并且列表似乎没有任何逻辑顺序...它将从1月8日返回两个结果,从9日返回一个结果,从10号起4条,依此类推。


选择具有相同时间戳的所有会话,对其进行分组并创建仅显示给定会话数据的可选对象的最佳方法是什么?

#1楼 票数:0 已采纳

如果您不对查询进行排序,则列表可能没有任何逻辑顺序。 另外,您将覆盖session列中存在重复值的会话数据。 您可能想要执行类似$sessionArray[$s_time][] = array(... ,将每行附加在会话ID下。此外,如果遇到问题,最好将查询结果限制为例如20到100,并保持按摩直至获得所需的结果。

  ask by alxndrwcz translate from so

未解决问题?本站智能推荐:

1回复

如何将MySQL中具有相同值的行分组为PHP?

因此,我试图每天对不同的行进行排序,并仅输出不同唯一行的一些“ testdate”信息,但是我遇到的问题是,只有第一个id才能获得正确的输出“ testdate”,而不是其他所有ID。 请看一下我现在所拥有和正在寻找的示例。 这是我的名称为“ 1702”的表: 我当前的结果是这样
1回复

如何在php中将具有相同值的行显示为一组

数据库结构: 我需要一些帮助。 我想显示该数据库中的一组记录。 我想显示所有具有相同USERID的用户,但将具有相同ENTRYDATE和EXITDATE的用户分组在同一DIV中。 例如,结果应该是这样的...
2回复

将具有相同值的SQL输出分组

我正在尝试创建一个脚本来显示一家商店的营业情况。 我希望这些空缺在彼此下方列出。 例如,如果星期一,星期二和星期三的开放时间完全相同,我希望将其分组为: 周一至周三:12:00-15:00 星期四:13:00-15:00 星期五:10:00-18:00 星期六:12
3回复

具有预准备语句的简单PHP选择不显示结果

我正在尝试创建一个简单的PHP脚本,该脚本使用准备好的语句选择数据。 当前,我正在使用本教程作为源。 当我调用脚本时,error.log中没有错误,但是没有数据显示。 这是我的脚本: 我的结构如下所示: 我试图通过调用http://URL/php/protected.p
4回复

MYSQL / PHP选择相同的值

我有一张桌子,上面有可以订购的产品。 现在,我需要获取所有instore都具有值1的订单,例如orderid2。 这怎么可能? 所需结果
2回复

PHP / MySql选择与答复分组的注释

我正在编写一个脚本来处理类似于Facebook状态/回复的评论。 基本上,一个项目可以有评论,并且用户可以回复该评论(最多一层)。 我的表设置如下: 因此,如果用户回复评论#555,它会像常规评论一样出现在评论表中,然后还会在Comments_Reply中使用[555 | 新评
3回复

PHP SQL 选择 ID 数组中的位置并具有相同的变量列值 [重复]

这个问题在这里已经有了答案: 如何在 MySql 中返回具有相同列值的行3 个回答 5年前关闭。 所以我有一张类
2回复

有2个SQL查询到相同的PHP数组

我有一个关于SQL查询的问题。 在我使用一个查询之前。 : 现在,我需要使用2个不同的查询,并将它们放入同一数组中: 所以我有想法进行2次查询,然后将它们直接放入相同的$ result中。 为此,我进行了修改: $stmt = $dbh->prepare($