Получите Quickest 0-60 в базе данных, используя PHP или MySQL - PullRequest
0 голосов
/ 13 марта 2019

Не уверен, возможно ли это в малейшей степени, или, может быть, я слишком много об этом думаю, но ..

У меня огромный рекорд, полный треков 0-60 миль в час, и я пытаюсьчтобы найти самый быстрый, от начального идентификатора до конечного идентификатора, чтобы впоследствии я мог отобразить их на графике, показывающем, сколько времени понадобилось автомобилю для ускорения.Есть ли запрос MySQL, который я могу использовать, чтобы найти это?или даже оператор PHP?

Моя база данных выглядит примерно так:

--- vws_data ---
id      value (speed)   date
1       1               01/01/2019 12:00:00
2       3               01/01/2019 12:00:01
3       6               01/01/2019 12:00:02
4       10              01/01/2019 12:00:03
5       13              01/01/2019 12:00:04
6       1               01/01/2019 15:00:00
7       4               01/01/2019 15:00:01
8       10              01/01/2019 15:00:02
9       24              01/01/2019 15:00:03
10      29              01/01/2019 15:00:04
11      35              01/01/2019 15:00:05
12      40              01/01/2019 15:00:06
13      44              01/01/2019 15:00:07
14      47              01/01/2019 15:00:08
15      52              01/01/2019 15:00:09
16      56              01/01/2019 15:00:10
17      60              01/01/2019 15:00:11
18      30              01/01/2019 17:20:00
19      31              01/01/2019 17:20:01
20      30              01/01/2019 17:20:02

В этом примере я бы искал ID от 6 до 17

РЕДАКТИРОВАТЬ

Фактический пример моей базы данных.(Датчик 0D - скорость автомобиля) database example

Моя структура базы данных выглядит следующим образом.database columns

1 Ответ

0 голосов
/ 13 марта 2019

Итак, мне, наконец, удалось заставить его работать, развернув несколько переменных, пока база данных находилась в цикле while.

Во-первых, я пробежал по базе данных в порядке DESCENDING, ища все значения, содержащие 60 (конец), а также все значения, содержащие 0 (стоп). Затем я добавил оба значения времени начала / окончания в переменную и посчитал, сколько секунд потребовалось, чтобы достичь 60. Если бы результат был ниже, чем предыдущий, переменные myQuickest были бы изменены.

$myQuickest60Time = 100; // any high number to kick the less than off, 100 just to be safe.

$sql = "SELECT * FROM vws_getdata WHERE sensor = '0D' ORDER BY date DESC";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
      if($row["value"] == "60"){ // UP TO SPEED
        $myLookingForEnd = true;
        $my60Start = $row['date'];
      } else if($row['value'] == "0"){
        if($myLookingForEnd == true){
          $myLookingForEnd = false;
          $my60End = $row['date'];

          if($myQuickest60Time > (strtotime($my60Start) - strtotime($my60End))){
            $myQuickest60Time = (strtotime($my60Start) - strtotime($my60End));
            $myQuickest60Start = $my60Start;
            $myQuickest60End = $row['date'];
          }
        }
      }
    }
} else {
    echo "No Data";
}

Затем я снова запрашиваю базу данных, показывая только даты, соответствующие переменным myQuickest.

$sql2 = "SELECT * FROM vws_getdata WHERE sensor = '0D' AND date >= '".$myQuickest60End."' AND date <= '".$myQuickest60Start."' ORDER BY date ASC";
$result2 = $conn->query($sql2);

if ($result2->num_rows > 0) {
  while($row2 = $result2->fetch_assoc()){
    echo "INNER  -  Value: " . $row2['value'] . "  -  ID: " . $row2['id'] . "  -  Date: " . $row2['date'] . "<br>";
  }
} else {
  echo "<b>INNER  -  NO RESULT</b><br>";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...