MySQL интерполировать данные - PullRequest
0 голосов
/ 22 апреля 2011

Существует ли "простой способ" получить две строки данных из таблицы и добавить строки со значениями между ними?

Я хочу получить широту, долготу и временную метку из каждой строки. Сравните временную метку с предыдущей строкой и интерполируйте новые строки, если временная метка больше моего минимума ... возьмите две строки с интервалом в 1 минуту и ​​добавляйте строки каждые 10 секунд ...

Является ли использование хранимой процедуры лучшим способом для этого? Самый простой?

В настоящее время используется mySql и PHP ...

1 Ответ

2 голосов
/ 22 апреля 2011

Я просто взял бы данные и сделал бы математику в PHP.SQL не так уж универсален, и вы избавите себя от головной боли.

РЕДАКТИРОВАТЬ: На самом деле, просто для удовольствия, вы могли бы упростить математику, оставивприсоединение к календарной таблице.

Сначала вам понадобится таблица ints со значениями 0-9.Затем вы можете сделать что-то вроде:

SELECT cal.t, lat, lng FROM (
    SELECT {start_time} + INTERVAL (t.i*1000 + u.i*100 + v.i*10) SECOND as t
    FROM ints as t
    JOIN ints as u
    JOIN ints as v
    WHERE t <= {end_time}
) LEFT JOIN locations ON (cal.t = locations.stamp)

Это вернет таблицу с NULL значениями для lat и lng, где не запись на 10второй знак, так что вы можете перебрать и сделать математику только для них.Имейте в виду, что это работает, только если все точки данных, которые у вас есть (кроме начала и конца), попадают прямо на 10-секундную отметку.

...