powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Инициализировать работу с несколькими бд одновременно
12 сообщений из 12, страница 1 из 1
Инициализировать работу с несколькими бд одновременно
    #39761282
JamesMilner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет! По работе понадобилось заменить данные столбцов между двумя dbf-файлами с таблицами. Как написать sql- запрос я вроде разобрался:
Допустим, есть таблицы T1 И T2. в первой таблице есть столбец Tabn, а во второй есть столбец Tn_old . Между ними есть соответствие. Нужно заменить во второй таблице значения из столбца Tabn на значения из столбца Tabn в первой таблице, исход из соответствия.

SQL-запрос: UPDATE T1 SET T2.Tabn = T1.Tabn FROM T2 WHERE T2.Tn_old = T1.Tabn

Проблема заключается в том, что я не могу одновременно подключить две бд через USE И аллисы, не догоняю как . Буду благодарен за советы
...
Рейтинг: 0 / 0
Инициализировать работу с несколькими бд одновременно
    #39761287
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JamesMilner,

Код: sql
1.
2.
3.
Use db1!t1 in 0 alias t1 
Use bd2!t2 in 0 alias t2
UPDATE T1 SET T2.Tabn = T1.Tabn FROM T2 WHERE T2.Tn_old = T1.Tabn

Какие проблемы?
...
Рейтинг: 0 / 0
Инициализировать работу с несколькими бд одновременно
    #39761299
JamesMilner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergey Sizov, я так и записал в командной строке, далее выскакивает Common Dialog для выбора DBF-файла и идёт ошибка
...
Рейтинг: 0 / 0
Инициализировать работу с несколькими бд одновременно
    #39761336
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JamesMilnerSergey Sizov, я так и записал в командной строке, далее выскакивает Common Dialog для выбора DBF-файла и идёт ошибкаН у так запросы надо правильно писать.
Код: sql
1.
UPDATE T1 SET T2.Tabn

Объясните как вы себе представляете изменение таблицы Т1 при указании в качестве обновляемого поля другой таблицы? Зачем тут T2? Update не может менять поля другой таблицы. Да и сообщение об ошибке говорит отнюдь не об невозможности открытия таблиц из разныз баз.
...
Рейтинг: 0 / 0
Инициализировать работу с несколькими бд одновременно
    #39761345
JamesMilner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergey Sizov, так я же не просто меняю столбцы местами между бд , а исходя из соответствия одного столбца в первой таблице и другого во второй. В чём именно я ошибся в составлении запроса, подскажите пожалуйста?
...
Рейтинг: 0 / 0
Инициализировать работу с несколькими бд одновременно
    #39761355
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JamesMilnerSergey Sizov, так я же не просто меняю столбцы местами между бд ,Что за чушь? Что за операцию вы обозвали такими словами? Таблицы не могут меняться столбцами/колонками. Тем более, что их там и нет. Есть записи, разбитые на одинаковые поля. а исходя из соответствия одного столбца в первой таблице и другого во второй. В чём именно я ошибся в составлении запроса, подскажите пожалуйста?Я же написал.
Если хотите менять значение поля в Т1, то надо писать
UPDATE T1 SET Tabn ...
Если хотите менять значение поля в Т2, то надо писать
UPDATE T2 SET Tabn ...
А не изобретать собственную логику.
...
Рейтинг: 0 / 0
Инициализировать работу с несколькими бд одновременно
    #39761363
JamesMilner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergey Sizov, есть условное поле tabn , в нём присутствую старые значения. Оно находится в бд T1.
А есть аналогичное поле tabn в бд T2, но у них другие значения. Значения в поле T1.tabn имеют соответствия со значениями в поле T2.Tabn_old. Вот мне и нужно заменить значения в полях tabn в обоих бд между собой иcходя из имеющейся аналогии
...
Рейтинг: 0 / 0
Инициализировать работу с несколькими бд одновременно
    #39761376
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JamesMilnerSergey Sizov, есть условное поле tabn , в нём присутствую старые значения. Оно находится в бд T1.
А есть аналогичное поле tabn в бд T2, но у них другие значения. Значения в поле T1.tabn имеют соответствия со значениями в поле T2.Tabn_old. Вот мне и нужно заменить значения в полях tabn в обоих бд между собой иcходя из имеющейся аналогииЕсли вы думаете, что объясняете понятно, то очень сильно ошибаетесь.
Одним запросом две таблицы не меняются, только одна. Соответственно, нужны как минимум два запроса на обновление.
Приведите примеры данных и опишите логику их обработки с указанием результата, который надо получить.
...
Рейтинг: 0 / 0
Инициализировать работу с несколькими бд одновременно
    #39761446
Penner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если все так запущено, то не проще ли

Use db1!t1 in 0 alias t1
Use bd2!t2 in 0 alias t2

Select t1
scan
select t2
locate .... && or SEEK ...
if found()
select t1
replace ...
endif
select t1
endscan
...
Рейтинг: 0 / 0
Инициализировать работу с несколькими бд одновременно
    #39761510
JamesMilner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergey Sizov, я понял. У меня есть база под названием BD2 . Вот её пример:
Tabn Fio Tabn_old4747 Ivanov 45694989 Petrov 60964533 Sidorov 25274810 Volkov 5421

Есть база под названием BD1:
Tabn Fio Tabn_old Ivanov 4569 Petrov 6096 Sidorov 2527 Volkov 5421

Мне нужно заполнить поле Tabn в базе DB1 значениями их BD2 в соответствии со значениями в поле Tabn_old, которые одинаковы в обоих базах
...
Рейтинг: 0 / 0
Инициализировать работу с несколькими бд одновременно
    #39761577
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так попробуй
Код: sql
1.
UPDATE T1 SET Tabn = T2.Tabn FROM T2 WHERE T2.Tn_old = T1.Tn_old
...
Рейтинг: 0 / 0
Инициализировать работу с несколькими бд одновременно
    #39761579
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JamesMilner,

1. В базах нет полей, они есть в таблицах. В базах есть таблицы.
2. Как изменить значения в одной таблице данными из другой Пример с Update как раз по теме.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Инициализировать работу с несколькими бд одновременно
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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