|
|
|
SELECT и UPDATE в одном запросе?
|
|||
|---|---|---|---|
|
#18+
Имею две таблицы OLD.dbf и NEW.dbf. структура OLD.dbf: number - character a1 - character a2 - character a3 - character b1 - character b2 - character структура NEW.dbf: number- character b1 - character b2 - character Что необходимо сделать: Если поле numder в OLD - такое же как в NEW, заменить поля b1 и b2 в OLD из таблицы NEW Вопрос: можно ли это выполнить в одном SQL-запросе? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2007, 14:40 |
|
||
|
SELECT и UPDATE в одном запросе?
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2007, 14:56 |
|
||
|
SELECT и UPDATE в одном запросе?
|
|||
|---|---|---|---|
|
#18+
Игорь Трохимчук Если поле numder в OLD - такое же как в NEW, заменить поля b1 и b2 в OLD из таблицы NEW ошибся, numder = number ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2007, 14:57 |
|
||
|
SELECT и UPDATE в одном запросе?
|
|||
|---|---|---|---|
|
#18+
если старшая версия фокспро, то замените на инт, для ключа вполне достаточно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2007, 14:59 |
|
||
|
SELECT и UPDATE в одном запросе?
|
|||
|---|---|---|---|
|
#18+
прошелмимо Код: plaintext 1. 2. 3. Попробовал выполнить, выдает ошибку в команде на строке from new t2 ; - не распознанная фраза. Ведь в конструкции update нет параметра from . (использую VFP 7.0) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2007, 15:09 |
|
||
|
SELECT и UPDATE в одном запросе?
|
|||
|---|---|---|---|
|
#18+
авториспользую VFP 7.0 с этого и нужно было начать да это синтаксис 9-й версии тогда релейшинами связывайте таблицы и реплейс ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2007, 15:37 |
|
||
|
SELECT и UPDATE в одном запросе?
|
|||
|---|---|---|---|
|
#18+
перейди на 9-ку - на 7-ке сидеть смысла никакого нет трудозатраты на переделку окупятся выигрышем, который дает исп-е новых возможностей вот такие выкрутасы позволяет 9-я версия Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2007, 15:39 |
|
||
|
SELECT и UPDATE в одном запросе?
|
|||
|---|---|---|---|
|
#18+
Спасибо за помощь, значит в одном запросе не выйдет. На счет 9-й версии Вы правы, пора бы перейти :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2007, 16:21 |
|
||
|
SELECT и UPDATE в одном запросе?
|
|||
|---|---|---|---|
|
#18+
Если в таблице New есть индекс по полю number, то можно так: Код: plaintext 1. 2. 3. 4. Здесь я предполагаю, что таблицы new и old уже открыты и у таблицы new есть индекс по полю number, который так и называется "number" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2007, 17:05 |
|
||
|
SELECT и UPDATE в одном запросе?
|
|||
|---|---|---|---|
|
#18+
ВладимирМЕсли в таблице New есть индекс по полю number, то можно так: Код: plaintext 1. 2. 3. 4. Здесь я предполагаю, что таблицы new и old уже открыты и у таблицы new есть индекс по полю number, который так и называется "number" Создаю индекс number для таблицы new : SELECT new INDEX ON mitgl TAG mitgl но на строке REPLACE FOR SEEK(number,"new","number") вылазит ошибка: не найден алиас. Таблицу new предварительно открываю так: IF( !USED("new")) USE new ENDIF Ещё пробовал так: IF( !USED("new")) USE new ALIAS new ENDIF И все равно также ругается, поэтому не знаю, что Фоксе не нравится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2007, 01:30 |
|
||
|
SELECT и UPDATE в одном запросе?
|
|||
|---|---|---|---|
|
#18+
Игорь Трохимчук Создаю индекс number для таблицы new : SELECT new INDEX ON mitgl TAG mitgl Если Вы создаете индекс по полю NUMBER, то почему используете поле MITGL? Игорь Трохимчукно на строке REPLACE FOR SEEK(number,"new","number") вылазит ошибка: не найден алиас. Команда USE кроме открытия таблицы в указанной рабочей области также и закрывает таблицу, которая ранее была открыта в той же рабочей области. Если рабочая область не указана явно, то все это происходит в текущей рабочей области. Вы хотите изменить данные в таблице Old. А открываете ее в какой рабочей области? Там же, где и таблица New? Синтаксис должен быть примерно такой Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Использование опции IN 0 говорит о том, что таблицу надо открыть в первой попавшейся свободной рабочей области. Т.е. не занятой другой таблицей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2007, 09:46 |
|
||
|
SELECT и UPDATE в одном запросе?
|
|||
|---|---|---|---|
|
#18+
Попробуй так: Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2007, 02:39 |
|
||
|
SELECT и UPDATE в одном запросе?
|
|||
|---|---|---|---|
|
#18+
танцы на пустом месте я ж советовал, релейшином свяжи и всего делов Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2007, 09:52 |
|
||
|
SELECT и UPDATE в одном запросе?
|
|||
|---|---|---|---|
|
#18+
Я бы добавил ещё replace all b1 with new.b1,; b2 with new.b2 for number=new.number Поскольку Fox иногда если number#new.number может дать значение для b1 и b2 пустое ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2007, 12:53 |
|
||
|
SELECT и UPDATE в одном запросе?
|
|||
|---|---|---|---|
|
#18+
Я бы добавил ещё replace all b1 with new.b1,; b2 with new.b2 for number=new.number Поскольку Fox иногда если number#new.number может дать значение для b1 и b2 пустое ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2007, 12:54 |
|
||
|
SELECT и UPDATE в одном запросе?
|
|||
|---|---|---|---|
|
#18+
ВладимирМЕсли в таблице New есть индекс по полю number, то можно так: Код: plaintext 1. 2. 3. 4. Здесь я предполагаю, что таблицы new и old уже открыты и у таблицы new есть индекс по полю number, который так и называется "number" Если здесь надо будеть не толко поле number, а еще 2-й поле (допустим поле N2) проверить? Тогда как будеть? Если индексировать по 2-м поле не получается? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2008, 13:04 |
|
||
|
SELECT и UPDATE в одном запросе?
|
|||
|---|---|---|---|
|
#18+
Получится. Если создать составной индекс по двум полям. Например, так Код: plaintext Соответственно и искать надо будет составное выражение. Только следует иметь в виду, что создание каждого индекса "утяжеляет" проект. Это значит, что создавть индексы для "разовой" операции - не стоит. Особенно следует избегать именно составных индексов. Затраты не окупаются. Если это разовая задача, и время выполнения обновления не критично, то можно делать обновление "в лоб". По одной записи за раз. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Кстати, если в таблице Tab2 есть два отдельных индекса по полю F1 и по полю F2, то такой код будет выполняться достаточно быстро ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2008, 16:10 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=34735119&tid=1588115]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
69ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 191ms |
| total: | 346ms |

| 0 / 0 |
