У меня есть таблица с этой структурой:
Column | Type |
id | int |
version | int |
status_id | int | // can be 1 active, 2 suspended, 3 removed
update | Timestamp |
position | Geometry |
Indexes:
"PK_poi" PRIMARY KEY, btree (id, version)
Так что это моя структура таблицы, в основном что-то произойдет в Location, я создам это, затем что-то еще произойдет, и я обновлю событие сновая версия.
Таким образом, данные будут выглядеть как
id | version | status_id | update | position
1 | 1 | 1 | 2018-09-17 10:52:48 | x,y
2 | 1 | 1 | 2018-09-17 10:52:48 | x,y
2 | 2 | 1 | 2018-09-17 11:02:48 | x,y
2 | 3 | 2 | 2018-09-17 11:22:48 | x,y
1 | 2 | 2 | 2018-09-17 11:52:48 | x,y
2 | 4 | 1 | 2018-09-17 12:52:48 | x,y
1 | 3 | 3 | 2018-09-17 12:52:48 | x,y
2 | 5 | 3 | 2018-09-17 13:52:48 | x,y
3 | 1 | 1 | 2018-09-17 14:52:48 | x,y
3 | 2 | 1 | 2018-09-17 14:52:48 | x,y
4 | 1 | 1 | 2018-09-17 16:52:48 | x,y
4 | 2 | 1 | 2018-09-17 16:52:48 | x,y
. Поэтому я пытаюсь выбрать удаленный пункт, который возвращает мне «последнюю» версию в течение указанного интервала времени на основеметка времени.Но только если «последняя» версия не со статусом - приостановлена или удалена.
Так что, если в 17:52 я сделаю запрос в БД и скажу, предоставит мне последние события за последний час, я бы ожидал:
id | version | status_id | update | position
4 | 2 | 1 | 2018-09-17 16:52:48 | x,y
если я скажу, однако, дайте мне последние события за последние 24 часа, я бы ожидал
id | version | status_id | update | position
3 | 2 | 1 | 2018-09-17 14:52:48 | x,y
4 | 2 | 1 | 2018-09-17 16:52:48 | x,y
Я очень запутался, как это сделать, из-за составного ключа,Можете ли вы дать указания о том, что именно я должен читать?
Заранее спасибо