powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / История изменения поля. Как взять последнее изменение?
8 сообщений из 8, страница 1 из 1
История изменения поля. Как взять последнее изменение?
    #39474535
Доброго дня!
Имею историю изменения некого поля. Имею и дату изменения, но столкнулся с тем, что в одну секунду прошло 2 изменения. Никакого автоинкремента нет в таблице. Не могу понять, как отсортировать строки с учетом изменений, дабы взять последнее изменение?

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
with t as
 (select 'Значение1' oldr, 'Значение2' newr
    from dual
  union all
  select 'Значение2', 'Значение3'
    from dual
  union all
  select 'Значение3', 'Значение4'
    from dual
  union all
  select 'Значение4', 'Значение5'
    from dual)
select t.* from t



Спасибо!
...
Рейтинг: 0 / 0
История изменения поля. Как взять последнее изменение?
    #39474536
Каюсь. Это ведь обычное дерево.
Вопрос снят. Доброго дня!
...
Рейтинг: 0 / 0
История изменения поля. Как взять последнее изменение?
    #39474539
Хотя, не такое уж и обычное

Возможно следующее:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
with t as
 (select 'Значение1' oldr, 'Значение2' newr
    from dual
  union all
  select 'Значение2', 'Значение3'
    from dual
  union all
  select 'Значение3', 'Значение4'
    from dual
  union all
  select 'Значение4', 'Значение5'
    from dual
  union all
  select 'Значение5', 'Значение1'
    from dual
  union all
  select 'Значение1', 'Значение4'
    from dual
  
  )
select t.*, level
  from t
 START WITH 'Значение1' = oldr
CONNECT BY NOCYCLE prior newr = oldr



Последним изменением, конечно же, будет изменение с 'Значение1' на 'Значение4'. Как получить его?
...
Рейтинг: 0 / 0
История изменения поля. Как взять последнее изменение?
    #39474560
цоннецт бы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Взять строкуКак получить его?добавить атрибут последовательности переходов.
...
Рейтинг: 0 / 0
История изменения поля. Как взять последнее изменение?
    #39474624
Maxmix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если значение может меняться произвольным образом, и нет данных для однозначной сортировки, то очевидно никак.
...
Рейтинг: 0 / 0
История изменения поля. Как взять последнее изменение?
    #39474644
AnSi_Sr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для общего случая (когда в один момент времени осуществляется несколько переходов между состояниями да еще и с зацикливанием) нужно начать с упорядочения этих моментов времени с помощью dense_rank, а в иерархическом соединении (connect by) к условию на равенство prior previous state и current state добавить ограничение на prior ndencerank = ndencerank + 1 (или наоборот).
...
Рейтинг: 0 / 0
История изменения поля. Как взять последнее изменение?
    #39474658
цоннецт бы,

Можно подробнее?

AnSi_Sr,

Не могли бы вы перевести это на язык структрурированных запросов? :)
...
Рейтинг: 0 / 0
История изменения поля. Как взять последнее изменение?
    #39474697
AnSi_Sr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Взять строкуAnSi_Sr,
Не могли бы вы перевести это на язык структрурированных запросов? :)


Хорошо, имел в виду следующее:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
WITH
...
SELECT s_states.*, DENSE_RANK () OVER (ORDER BY s_states.dtime) as nrank
...
SELECT level, sys_connect_by_path(s_states2.scurrentstate, '->') as spath, s_states2.*
CONNECT BY PRIOR s_states2.scurrentstate = s_states2.spreviousstate
            AND PRIOR s_states2.nrank = s_states2.nrank + 1


К результату применить условие, ограничивающее выборку, например по максимальному LEVEL или, например, на старт из одного из состояний на начальный момент времени.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / История изменения поля. Как взять последнее изменение?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]