|
Обновление данных в таблице
|
|||
---|---|---|---|
#18+
Добрый вечер! Есть базовая таблица main_table следующего вида: id metric date_valid date property action1 10 10.янв ? 154 I1 11 10.янв ? ? U1 10 10.янв ? 154 D1 12 10.янв ? ? I1 12 10.янв ? ? I где поле action - действие, которое было совершено с записью (I - вставка, U - обновление, D - удаление) Данные из нее вставляются в волатильную таблицу с помощью след. запроса: (только те записи где действие action = I и U) Код: plsql 1. 2. 3. 4. 5. 6. 7. 8.
Видим содержимое волатильной таблицы: Id metric date property1 10 31.12.9999 1541 11 31.12.9999 ?1 12 31.12.9999 ?1 12 31.12.9999 ? Далее обновляем данные в волатильной таблице при помощи запроса: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Видим результат: id metric date property1 10 10.01.2021 1541 11 31.12.9999 ?1 12 31.12.9999 ?1 12 31.12.9999 ? Из конечного результата видно, что запись id metric date property1 10 10.01.2021 154 имеет date = 10.01.2021, а нужно чтобы была date = 31.12.9999, т.е. она обновляется так как запись с действием D тоже присутствует у метрики 10. Подскажите, как при обновлении учесть (наложить условие, чтобы не обновлялись записи где есть по метрикам и I и D)? мое предположение, что можно в запрос обновления добавить условие с NOT EXISTS Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
Но тогда никакие записи не обновляются, подскажите, пожалуйста, еще варианты решения! Буду благодарен за помощь! ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2021, 20:10 |
|
Обновление данных в таблице
|
|||
---|---|---|---|
#18+
1. Это точно MS SQL? 2. возможно, дело в SET DATE = mt. date Вы обновляете дату из FROM main_table mt , а там date как раз и есть " 10.янв" ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2021, 20:27 |
|
Обновление данных в таблице
|
|||
---|---|---|---|
#18+
godsql, Да, там дата как раз 10.01, но как сделать, чтобы эта запись не обновлялась при update,так как по ней есть действие I? Нужно добавить доп.условие где происходит апдейт ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2021, 20:39 |
|
Обновление данных в таблице
|
|||
---|---|---|---|
#18+
ну и допишите Код: sql 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2021, 21:03 |
|
Обновление данных в таблице
|
|||
---|---|---|---|
#18+
а вообще, подумайте, как лучше привести таблицы к нормальной форме у вас строчки одинаковые соответственно, и определить с какими нужно работаь - тяжело Id metric date property 1 12 31.12.9999 ?1 12 31.12.9999 ? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2021, 21:23 |
|
|
start [/forum/topic.php?fid=46&fpage=22&tid=1684591]: |
0ms |
get settings: |
11ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
38ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
44ms |
get tp. blocked users: |
2ms |
others: | 298ms |
total: | 428ms |
0 / 0 |