|
Замена данных в таблице.
|
|||
---|---|---|---|
#18+
Здравствуйте. Есть две таблицы plan_izd и n_plan_izd необходимо перенести данные из таблицы plan_izd в n_plan_izd, при условии если запись с таким id_izd существует строку перезаписать, а если нет то создать строку и записать. Вот код что не так? Код: javascript 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2018, 16:13 |
|
Замена данных в таблице.
|
|||
---|---|---|---|
#18+
andrepont, в коде, вроде бы, всё "так". Но вот вы совершенно ничего не рассказали о причинах поиска "не так" в этом коде. Не обновляется? Не добавляется? Добавляется не то? Что-то еще? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2018, 16:31 |
|
Замена данных в таблице.
|
|||
---|---|---|---|
#18+
При выполнении кода нужно поочередно сравнить данные в таблице n_plan_izd с данными в таблице plan_izd если запись в поле n_plan_izd.id_izd=plan_izd.id_izd то поля в этой строке нужно заменить, а если <> то создать новую строку. А у меня при выполнении этого не происходит. Может перед locate нужно scan select plan_izd добавить? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2018, 16:50 |
|
Замена данных в таблице.
|
|||
---|---|---|---|
#18+
andrepontЗдравствуйте. Есть две таблицы plan_izd и n_plan_izd необходимо перенести данные из таблицы plan_izd в n_plan_izd, при условии если запись с таким id_izd существует строку перезаписать, а если нет то создать строку и записать. Вот код что не так? Не так вот что Код: javascript 1.
all - это все записи таблицы То что тебе надо пишется так Код: sql 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.
PS Будет тормозить - поизучай что такое индексы и IndexSeek() ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2018, 17:10 |
|
Замена данных в таблице.
|
|||
---|---|---|---|
#18+
1. перед использованием команды locate надо явным образом перейти в рабочую область той таблицы, где будет выполняться поиск. В данном случае это, очевидно, n_plan_izd select n_plan_izd locate for (...) 2. Данные для сравнения из других рабочих областей, по умолчанию, будут взяты из текущей записи. ОДНО значение. 3. Использование в команде replace опции ALL без уточнения FOR или WHILE означает обновить ВСЕ записи таблицы 4. Использованный в качестве оператора сравнения символ тождественного равенства означает, что данные будут сравниваться включая концевые пробелы. Т.е. если у Вас размерность полей n_plan_izd.id_izd и plan_izd.id_izd разная, то равенство не будет выполнено никогда. Обычно вполне достаточно простого сравнения. Т.е. одиночного символа равенства. Сильно сомневаюсь, что Вы используете поля типа VarChar. Если стоит задача сравнения всех записей двух таблиц, то есть несколько вариантов. Зависит от постановки задачи, объема данных в таблицах и личных предпочтений программиста. Но в простейшем случае можно и через SCAN Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2018, 17:10 |
|
Замена данных в таблице.
|
|||
---|---|---|---|
#18+
Дописал вот так Код: java 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.
но почему то первую строку не записывает и в конце таблицы добавляет строку с нулями ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2018, 17:12 |
|
Замена данных в таблице.
|
|||
---|---|---|---|
#18+
andrepontДописал вот так Надо так Код: sql 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2018, 17:19 |
|
Замена данных в таблице.
|
|||
---|---|---|---|
#18+
andrepont, а теперь сравните ваши два replace'а. Вам не кажется, что в любом случае выполняется одно и тоже и что replace надо оставить один, но за endif? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2018, 17:20 |
|
Замена данных в таблице.
|
|||
---|---|---|---|
#18+
сейчас вот так: Код: javascript 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.
но все равно первую запись не берет, а в конце добавляет строку с нулевыми значениями??? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2018, 17:34 |
|
Замена данных в таблице.
|
|||
---|---|---|---|
#18+
andrepont, вот примерный код для замены твоей портянки: Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2018, 17:40 |
|
Замена данных в таблице.
|
|||
---|---|---|---|
#18+
andrepontно все равно первую запись не берет, а в конце добавляет строку с нулевыми значениями???Ну так отладчик в зубы и по шагам проходишь и смотришь что, где как работает/не работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2018, 17:44 |
|
Замена данных в таблице.
|
|||
---|---|---|---|
#18+
В итоге так: Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
смотрел через отладчик первый массив с переменными создаёт сразу с данными второй строки. Не понимаю в чем проблема. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2018, 18:59 |
|
|
start [/forum/topic.php?fid=41&fpage=9&tid=1581750]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
29ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
2ms |
others: | 298ms |
total: | 424ms |
0 / 0 |