|
|
|
Order by по обновлению строки
|
|||
|---|---|---|---|
|
#18+
Есть поле в котором содержится несколько одинаковых значений. Например: Код: plsql 1. 2. 3. 4. 5. 6. 7. Нужно отсортировать данные так, чтобы при обновлении строки (row) 3 с код 2 на код 1 она поднималась на 1-ю строку. Т.е при модификации данных отсортировать по последнему обновлению записи. Должен получится такой вид: Код: plsql 1. 2. 3. 4. 5. 6. 7. Но если изменить строку (row) 2 ,из первой таблицы, на код 2, то наоборот эту запись поставить на последнюю позицию т.е таблица должна стать такого вида: Код: plsql 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2017, 10:39 |
|
||
|
Order by по обновлению строки
|
|||
|---|---|---|---|
|
#18+
Viacheslav.dem, в тригере сохраняйте старое значение Код: plsql 1. 2. 3. 4. 5. 6. 7. если 3 1 снова заменить на 3 2 то как отсортируется? ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2017, 10:45 |
|
||
|
Order by по обновлению строки
|
|||
|---|---|---|---|
|
#18+
Stax, Код: plsql 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2017, 10:56 |
|
||
|
Order by по обновлению строки
|
|||
|---|---|---|---|
|
#18+
На самом деле, больше 1 дубликата в таблице не будет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2017, 11:03 |
|
||
|
Order by по обновлению строки
|
|||
|---|---|---|---|
|
#18+
Viacheslav.dem, Код: 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. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2017, 11:12 |
|
||
|
Order by по обновлению строки
|
|||
|---|---|---|---|
|
#18+
Viacheslav.demНа самом деле, больше 1 дубликата в таблице не будет Код: plsql 1. 2. 3. 4. 5. 6. 7. три единички ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2017, 11:13 |
|
||
|
Order by по обновлению строки
|
|||
|---|---|---|---|
|
#18+
Stax, Вообще, в таблице больше одного дубликата не будет я имел ввиду Например: Код: plsql 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2017, 11:19 |
|
||
|
Order by по обновлению строки
|
|||
|---|---|---|---|
|
#18+
Либо Код: plsql 1. 2. 3. 4. 5. Тоесть имеется только один дубликат. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2017, 11:24 |
|
||
|
Order by по обновлению строки
|
|||
|---|---|---|---|
|
#18+
Алгоритм не ясен. Имеет ли значение строка которая была в row. Исходя из условия если row уменьшилась(3->2), то она должна быть первой в списке в рамках нового code, а если row увеличилась или осталось неизменной то она должна быть последней в списке. Верно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2017, 12:13 |
|
||
|
Order by по обновлению строки
|
|||
|---|---|---|---|
|
#18+
Viacheslav.demЛибо Код: plsql 1. 2. 3. 4. 5. Тоесть имеется только один дубликат. по любому для сортировки нужны "старое" значение и временная метка (или затирать "устаревшее"), я так понимаю если коде поменяли на меньшее, то надо ставить первым, если на большее то последним ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2017, 12:25 |
|
||
|
Order by по обновлению строки
|
|||
|---|---|---|---|
|
#18+
Вот более подробно: есть таблица test с полями Код: plsql 1. 2. 3. 4. При Код: plsql 1. получаем Код: plsql 1. 2. 3. 4. сортировка при таком варианте должна выглядеть так: Код: plsql 1. 2. 3. 4. А задача состоит чтобы обновить code в таблице с 1..n, с шагом один по указанной выше сортировке, т.е: Код: plsql 1. 2. 3. 4. Это пример когда меняется код с большего на меньшее. Когда наоборот, если брать последний пример Код: plsql 1. получаем Код: plsql 1. 2. 3. 4. при сортировке должны получить Код: plsql 1. 2. 3. 4. Далее обновляем с 1..n, т.е: Код: plsql 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2017, 13:16 |
|
||
|
Order by по обновлению строки
|
|||
|---|---|---|---|
|
#18+
Viacheslav.dem А задача состоит чтобы обновить code в таблице с 1..n, с шагом один по указанной выше сортировке, т.е: [/src] ничего не понял Вот более подробно: есть таблица test с полями Код: plsql 1. 2. 3. 4. 5. 6. 7. что надо 1) обновить code в таблице (написать update ...) с учетом ... 2) прописать сортировку (select ... order by ...) которая б учитывала update ... ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2017, 14:47 |
|
||
|
Order by по обновлению строки
|
|||
|---|---|---|---|
|
#18+
Алгоритм вы поняли правильно. Нужно написать апдейт который правильно отсортирует код в таблице при её модификации. Staxя так понимаю если коде поменяли на меньшее, то надо ставить первым, если на большее то последним ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2017, 14:58 |
|
||
|
Order by по обновлению строки
|
|||
|---|---|---|---|
|
#18+
Viacheslav.demНужно написать апдейт который правильно отсортирует код в таблице при её модификации. Staxя так понимаю если коде поменяли на меньшее, то надо ставить первым, если на большее то последним ..... stax уже чуть теплее (нужен update) апдейт не может сортировать (иот не рассматриваем), он меняет поля в строке/строках, но не упорядочивает их если грубо то в оракле за сортировку отвечает order by отсюда не совсем понятно есть таблица test с полями Код: plsql 1. 2. 3. 4. 5. 6. 7. что должно произойти в случаях если меняем code 1) c 6 на 2 2) c 6 на 9 ? ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2017, 15:14 |
|
||
|
Order by по обновлению строки
|
|||
|---|---|---|---|
|
#18+
1. Код: plsql 1. 2. 3. 4. 5. 6. 7. 2. Код: plsql 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2017, 15:28 |
|
||
|
Order by по обновлению строки
|
|||
|---|---|---|---|
|
#18+
не учитывая 9й айди не заметил что там 7 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2017, 15:32 |
|
||
|
Order by по обновлению строки
|
|||
|---|---|---|---|
|
#18+
Viacheslav.dem, о уже чуть проясняетя в таблице id любое число, code от 1 до n, без дырок code порядковий номер id? состояние Код: plsql 1. 2. 3. 4. 5. 6. 7. недопустимо, есть дырки для удобства надо вивод сортировать по коде задача про смене одного коде, поменять (переномеровать) и другие коды (некоторие пары id-code поменяются) с учетем на что меняем (>,<) два параметра 1) какой коде меняем (1-n) 2) на что меняем (1-n) так? ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2017, 15:53 |
|
||
|
Order by по обновлению строки
|
|||
|---|---|---|---|
|
#18+
Stax, Вроде так. Изначально в коде дырок не будет т.е от 1 до n с шагом один. пример: Код: plsql 1. 2. 3. 4. 5. 6. 7. В случае если меняем code 5 на 2, тогда: Код: plsql 1. 2. 3. 4. 5. 6. 7. В случае если меняем code 2 на 5 (с самой верхней таблицы), тогда Код: plsql 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2017, 16:12 |
|
||
|
Order by по обновлению строки
|
|||
|---|---|---|---|
|
#18+
Id может не совпадать с code ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2017, 16:18 |
|
||
|
Order by по обновлению строки
|
|||
|---|---|---|---|
|
#18+
Viacheslav.dem, параметры не проверяю с (1 по н) Код: 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. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2017, 17:26 |
|
||
|
Order by по обновлению строки
|
|||
|---|---|---|---|
|
#18+
Stax, Большое спасибо очень помогли, все работает! Только не понятно для чего нужен был подзапрос в конструкции where. Попробовал вот так тоже отлично работает. Код: plsql 1. 2. Не могли бы вы еще помочь разобраться с вот этим вопросом 20897699 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2017, 11:19 |
|
||
|
Order by по обновлению строки
|
|||
|---|---|---|---|
|
#18+
Viacheslav.demStax, Большое спасибо очень помогли, все работает! Только не понятно для чего нужен был подзапрос в конструкции where. Попробовал вот так тоже отлично работает. перемудрил мой изначальный update был сильно корявый ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2017, 12:35 |
|
||
|
Order by по обновлению строки
|
|||
|---|---|---|---|
|
#18+
Stax, а доменный индекс почему не попробовал? Вроде как раз в тему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2017, 12:48 |
|
||
|
Order by по обновлению строки
|
|||
|---|---|---|---|
|
#18+
БолезныйStax, а доменный индекс почему не попробовал? Вроде как раз в тему. для меня пока сложновато я и так простой update c лишним подзапросом состряпал да и что надо Вечеславу, не сразу допер .... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2017, 12:54 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39542728&tid=1885025]: |
0ms |
get settings: |
7ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
159ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
86ms |
get tp. blocked users: |
1ms |
| others: | 202ms |
| total: | 494ms |

| 0 / 0 |
