|
|
|
Вставка записи в эту же таблицу
|
|||
|---|---|---|---|
|
#18+
Нужно взять запись из таблицы и вставить ее в эту же таблицу, поменяв значения 2-х полей. Как это проще сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2005, 12:51:07 |
|
||
|
Вставка записи в эту же таблицу
|
|||
|---|---|---|---|
|
#18+
Вставить новую запись с двумя новыми значениями. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2005, 12:51:52 |
|
||
|
Вставка записи в эту же таблицу
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. Истина где-то там... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2005, 13:01:21 |
|
||
|
Вставка записи в эту же таблицу
|
|||
|---|---|---|---|
|
#18+
ну, скажем, было: use tabl тогда select tabl append from tabl for ... (какая запись) replace pole1 with ... , pole2 with ... (новые значения). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2005, 13:04:20 |
|
||
|
Вставка записи в эту же таблицу
|
|||
|---|---|---|---|
|
#18+
Если количество полей не велико, то можно так: Код: plaintext 1. 2. 3. 4. Идея в том, что FoxPro сначала вычислит те значения, которые надо подставить и только потом создаст новую запись. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2005, 13:22:20 |
|
||
|
Вставка записи в эту же таблицу
|
|||
|---|---|---|---|
|
#18+
Hi, ВладимирМ ! Интересно! И что - это ВСЕГДА срабатывает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2005, 16:09:07 |
|
||
|
Вставка записи в эту же таблицу
|
|||
|---|---|---|---|
|
#18+
А чем вызваны сомнения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2005, 16:42:31 |
|
||
|
Вставка записи в эту же таблицу
|
|||
|---|---|---|---|
|
#18+
почему нельзя воспользоваться конструкцией Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2005, 16:43:50 |
|
||
|
Вставка записи в эту же таблицу
|
|||
|---|---|---|---|
|
#18+
2Alex* сразу видно у кого девятка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2005, 16:54:39 |
|
||
|
Вставка записи в эту же таблицу
|
|||
|---|---|---|---|
|
#18+
2ВладимирМ конечно правильно как всегда но я бы всё это хозяйство в курсор сначала выгреб за вместо locate особенно если запись не одна, а правило изменение полей извесно тогда размер таблицы наверно не так критичен ну и append from бы сделал почему курсор ? Ну просто люблю с курсорами работать. В фоксе вообще почти всё на курсорах и таблицах ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2005, 17:04:53 |
|
||
|
Вставка записи в эту же таблицу
|
|||
|---|---|---|---|
|
#18+
проверил - в 8-ке тоже работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2005, 18:00:43 |
|
||
|
Вставка записи в эту же таблицу
|
|||
|---|---|---|---|
|
#18+
2ВладимирМ : Просто спросил :) (вдруг какие установки меняют это правило или есть исключения ;) А сейчас кажется что вроде где-то про это слышал или читал (но может - dejavu) 2leaf : Курсор, по-моему, тут и не нужен. "Размер" таблицы критичен в "ширину", а не в "вышину". Видимо при большом числе полей (не записей), перебор их всех будет подтормаживать, что ли. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2005, 06:19:23 |
|
||
|
Вставка записи в эту же таблицу
|
|||
|---|---|---|---|
|
#18+
Размер исходной таблицы - от 20 000 записей (и постоянно растет). Копировать надо от 0 до 100 записей. У всех этих записей надо будет менять одно поле на другое значение в соответствии с таблицей. Т.е. формируется таблица соответствия старый ИД -новый ИД, по старому ИД отбираются записи и копируются в эту же таблицу с новым ИД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2005, 05:58:17 |
|
||
|
Вставка записи в эту же таблицу
|
|||
|---|---|---|---|
|
#18+
Еще одно поле изменяется у всех новых записей на одинаковое значение (заранее заданное). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2005, 05:59:36 |
|
||
|
Вставка записи в эту же таблицу
|
|||
|---|---|---|---|
|
#18+
Сочинил такой код: Код: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. все вроде работает... но не оставляет ощущение что делаю кучу лишних движений и все можно сделать гораздо проще... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2005, 07:45:38 |
|
||
|
Вставка записи в эту же таблицу
|
|||
|---|---|---|---|
|
#18+
Сорри, коды попутал.. Сочинил такой код: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2005, 07:48:00 |
|
||
|
Вставка записи в эту же таблицу
|
|||
|---|---|---|---|
|
#18+
все вроде работает... интересно как ? SELECT sp1 SCAN id1=sp1.a && старый номер ID SELECT sp_zapch INSERT INTO sp_zapch (b,c,d,e,f,g,h) VALUES (sp1.b,sp1.c,sp1.d,sp1.e,sp1.f,sp1.g,sp1.h) id2=sp_zapch.a && новый номер ID INSERT INTO sootv (a,b) VALUES (id1,id2) ENDSCAN USE sp1.dbf IN 1 SHARED не есть гуд USE sp1.dbf IN 0 SHARED лучше ну и там еще есть чего много... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2005, 10:46:01 |
|
||
|
Вставка записи в эту же таблицу
|
|||
|---|---|---|---|
|
#18+
leaf все вроде работает... интересно как ? ну и там еще есть чего много... ну не знаю как, но работает... у меня VFP 9 а что еще не так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2005, 11:42:06 |
|
||
|
Вставка записи в эту же таблицу
|
|||
|---|---|---|---|
|
#18+
Возврат в начало SCAN'a сам "переключает" в исходную область... ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2005, 12:19:02 |
|
||
|
Вставка записи в эту же таблицу
|
|||
|---|---|---|---|
|
#18+
2Redrik ну может и так я не проверял привычка всё явно указывать да в последнее время я внутри скана явно область не меняю оператором селект просто нет необходимости как-то а вообще я бы всё это хозяйство немного по другому оформил ну это уже личное ну насчет областей это уж точно по крайней мере не аккуратно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2005, 12:37:34 |
|
||
|
Вставка записи в эту же таблицу
|
|||
|---|---|---|---|
|
#18+
да проверил действительно надо же что значит к do while привыкнуть спасибо привычка страшное дело буду знать правдо всё равно подход не самый лучший тем более скан по одной области с последующей вставкой а зачем запросы тода придуманы? текст проверки CREATE CURSOR qq1 (aa n(6)) CREATE CURSOR qq2 (aa n(6)) INSERT INTO qq1 VALUES (1) INSERT INTO qq1 VALUES (2) INSERT INTO qq1 VALUES (3) INSERT INTO qq2 VALUES (11) INSERT INTO qq2 VALUES (12) SELECT qq1 SCAN ?aa SELECT qq2 ENDSCAN ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2005, 12:51:52 |
|
||
|
Вставка записи в эту же таблицу
|
|||
|---|---|---|---|
|
#18+
leaf2Redrik а вообще я бы всё это хозяйство немного по другому оформил ну так подскажите! затем и вынес на обсуждение, что делал второпях, и хочется теперь привести все в правильный вид. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2005, 13:13:04 |
|
||
|
Вставка записи в эту же таблицу
|
|||
|---|---|---|---|
|
#18+
н-да... начал поплотнее тестировать - нашел ошибки... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2005, 15:09:57 |
|
||
|
Вставка записи в эту же таблицу
|
|||
|---|---|---|---|
|
#18+
Hi w3d! INSERT INTO таблица (список_полей_в_НУЖНОМ_ПОРЯДКЕ) ; SELECT список_полей_кроме_заменяемого, 123 ; FROM таблица ; WHERE условие_отбора_старых_записей Список полей в скобках должен соответствовать тому что даёт запрос - один к одному - ИМЕНА полей не обязательно должны соответствовать! 123 - это то "новое значение" которое нужно проставить "всем одинаковое". Можно конечно и переменную использовать. Поле первичного ключа проставлять НЕ НАДО - если у тебя ещё не работает по нему AUTOINC или NewID() в DefaultValue - самое время это сделать. Условие отбора - ну тебе виднее какие записи нужно "сдублировать". Всё предельно просто и логично, и тебе уже это решение подсказали! Posted via ActualForum NNTP Server 1.2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2005, 01:23:54 |
|
||
|
Вставка записи в эту же таблицу
|
|||
|---|---|---|---|
|
#18+
Igor Korolyov Всё предельно просто и логично, и тебе уже это решение подсказали! Все немного сложнее (по крайней мере, мне так кажется ) В таблице ID, ParentID. При копировании записей нужно сохранить структуру и привести ее в соответствие с новыми ID. AutoInc сделан. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2005, 05:43:07 |
|
||
|
|

start [/forum/topic.php?fid=41&fpage=317&tid=1594052]: |
0ms |
get settings: |
8ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
42ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
67ms |
get tp. blocked users: |
2ms |
| others: | 238ms |
| total: | 397ms |

| 0 / 0 |
