powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Update полей одной таблицы на основании другой
7 сообщений из 7, страница 1 из 1
Update полей одной таблицы на основании другой
    #32448650
K_olga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Будьте добры подскажите: мне нужно заменить значения поля1 таблицы1 на значения поля1 таблицы2 при соблюдении условия равенства поля3 этих таблиц, т.е. логичен был бы запрос вида:

UPDATE таблица1 SET таблица1.поле1=таблица2.поле1 WHERE таблица1.поле3=таблица2.поле3
Но насколько я понимаю таким образом меняется только одна первая запись, а мне нужно по всем записям. Как же быть?
...
Рейтинг: 0 / 0
Update полей одной таблицы на основании другой
    #32448706
АлександрК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сканировать Таблицу2.

SELECT Таблица2
SCAN
UPDATE таблица1 SET ;
таблица1.поле1=таблица2.поле1 ;
WHERE таблица1.поле3=таблица2.поле3
ENDSCAN
...
Рейтинг: 0 / 0
Update полей одной таблицы на основании другой
    #32448760
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
К сожалению привычный нам синтакс:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
UPDATE {table_name | view_name}
SET [{table_name | view_name}] 
    {column_list 
    | variable_list
    | variable_and_column_list}
        [, {column_list2 
            | variable_list2
            | variable_and_column_list2}
            ... [, {column_listN 
                    | variable_listN
                    | variable_and_column_listN}]]
[FROM {table_name | view_name}
    [, {table_name | view_name}]...]
        [..., {table_name16 | view_name16}]] 
[WHERE clause]


Не поддерживается до 8 версии включительно. Что-то изменить обещали в 9.

Напишите код... Мне кажется это пока единственный выход... Может кто и поправит...
...
Рейтинг: 0 / 0
Update полей одной таблицы на основании другой
    #32448763
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Долго отвечал :) Уже дали ответ...
...
Рейтинг: 0 / 0
Update полей одной таблицы на основании другой
    #32448938
foxwizard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну примерно так.

SELECT таблица1
SET RELATION TO поле3 INTO таблица2 ADDITIVE
REPLACE поле1 with таблица2.поле1 all

И быстро...
И работает...
Про индексы для связи не забываем.
...
Рейтинг: 0 / 0
Update полей одной таблицы на основании другой
    #32449306
K_olga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Работает. Всем большое спасибо!
...
Рейтинг: 0 / 0
Update полей одной таблицы на основании другой
    #32449403
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, вообще-то, если есть индекс, то настривать RELATION - не обязательно:

SELECT Tab1
REPLACE Field1 WITH Tab2.Field2 FOR SEEK(Tab1.id,"Tab2","id")

Здесь предполагается, что в таблице Tab2 есть индексный TAG с именем id по полю id.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Update полей одной таблицы на основании другой
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]