Запрос SQL для связи событий с метками времени в таблице из базы данных SQLITE - PullRequest
0 голосов
/ 24 октября 2011

У меня есть база данных в SQLITE (давайте назовем ее params), в которой хранится список изменений параметров и время их изменения.то есть:

key    paramid    time    val
---    -------    ----    ---
1      7          1.2     0
2      3          2.5     23
3      3          5.6     54
4      3          7.1     76
5      7          8.4     1
6      3          9.2     33
7      9          9.7     22
8      3          10.3    21

Я хотел бы использовать запрос для создания таблицы, которая включает каждый раз, когда один параметр изменяется вместе со значением другого параметра, когда первый параметр изменился, и время изменения.то есть:

param3Val    latestParam7Val    time
---------    ---------------    ----
23           0                  2.5
54           0                  5.6
76           0                  7.1
33           1                  9.2
21           1                  10.3

Есть какие-нибудь идеи для эффективной работы в SQL?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 24 октября 2011

Попробуйте это:

SELECT t1.val AS param3Val,
    (SELECT t2.val AS latestParam7Val
     FROM your_table t2
     WHERE t2.paramid <> t1.paramid
       AND t2.key < t1.key
     ORDER BY t2.key DESC
     LIMIT 1), t1.time
FROM your_table t1
ORDER BY t1.key
0 голосов
/ 24 октября 2011

Вы можете использовать:

SELECT p1.val
     , (SELECT p2.val
          FROM params p2
         WHERE p2.paramid = 7
           AND p2.time < p1.time
         ORDER BY p2.time DESC
         LIMIT 1
       ) latestParam7Val
     , p1.time
  FROM params p1

Альтернатива с объединениями:

SELECT p1.val
     , p2.val
     , p1.time
  FROM params p1
  LEFT JOIN params p2 ON p2.paramid = 7 AND p2.time < p1.time
  LEFT JOIN params p3 ON p3.paramid = 7 AND p3.time < p1.time
                                        AND p3.time > p2.time
 WHERE p3.time IS NULL
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...