Гость
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Инициализировать работу с несколькими бд одновременно / 12 сообщений из 12, страница 1 из 1
18.01.2019, 10:17
    #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
18.01.2019, 10:24
    #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
18.01.2019, 10:45
    #39761299
JamesMilner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Инициализировать работу с несколькими бд одновременно
Sergey Sizov, я так и записал в командной строке, далее выскакивает Common Dialog для выбора DBF-файла и идёт ошибка
...
Рейтинг: 0 / 0
18.01.2019, 11:15
    #39761336
Sergey Sizov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Инициализировать работу с несколькими бд одновременно
JamesMilnerSergey Sizov, я так и записал в командной строке, далее выскакивает Common Dialog для выбора DBF-файла и идёт ошибкаН у так запросы надо правильно писать.
Код: sql
1.
UPDATE T1 SET T2.Tabn

Объясните как вы себе представляете изменение таблицы Т1 при указании в качестве обновляемого поля другой таблицы? Зачем тут T2? Update не может менять поля другой таблицы. Да и сообщение об ошибке говорит отнюдь не об невозможности открытия таблиц из разныз баз.
...
Рейтинг: 0 / 0
18.01.2019, 11:21
    #39761345
JamesMilner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Инициализировать работу с несколькими бд одновременно
Sergey Sizov, так я же не просто меняю столбцы местами между бд , а исходя из соответствия одного столбца в первой таблице и другого во второй. В чём именно я ошибся в составлении запроса, подскажите пожалуйста?
...
Рейтинг: 0 / 0
18.01.2019, 11:33
    #39761355
Sergey Sizov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Инициализировать работу с несколькими бд одновременно
JamesMilnerSergey Sizov, так я же не просто меняю столбцы местами между бд ,Что за чушь? Что за операцию вы обозвали такими словами? Таблицы не могут меняться столбцами/колонками. Тем более, что их там и нет. Есть записи, разбитые на одинаковые поля. а исходя из соответствия одного столбца в первой таблице и другого во второй. В чём именно я ошибся в составлении запроса, подскажите пожалуйста?Я же написал.
Если хотите менять значение поля в Т1, то надо писать
UPDATE T1 SET Tabn ...
Если хотите менять значение поля в Т2, то надо писать
UPDATE T2 SET Tabn ...
А не изобретать собственную логику.
...
Рейтинг: 0 / 0
18.01.2019, 11:40
    #39761363
JamesMilner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Инициализировать работу с несколькими бд одновременно
Sergey Sizov, есть условное поле tabn , в нём присутствую старые значения. Оно находится в бд T1.
А есть аналогичное поле tabn в бд T2, но у них другие значения. Значения в поле T1.tabn имеют соответствия со значениями в поле T2.Tabn_old. Вот мне и нужно заменить значения в полях tabn в обоих бд между собой иcходя из имеющейся аналогии
...
Рейтинг: 0 / 0
18.01.2019, 11:57
    #39761376
Sergey Sizov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Инициализировать работу с несколькими бд одновременно
JamesMilnerSergey Sizov, есть условное поле tabn , в нём присутствую старые значения. Оно находится в бд T1.
А есть аналогичное поле tabn в бд T2, но у них другие значения. Значения в поле T1.tabn имеют соответствия со значениями в поле T2.Tabn_old. Вот мне и нужно заменить значения в полях tabn в обоих бд между собой иcходя из имеющейся аналогииЕсли вы думаете, что объясняете понятно, то очень сильно ошибаетесь.
Одним запросом две таблицы не меняются, только одна. Соответственно, нужны как минимум два запроса на обновление.
Приведите примеры данных и опишите логику их обработки с указанием результата, который надо получить.
...
Рейтинг: 0 / 0
18.01.2019, 13:00
    #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
18.01.2019, 14:39
    #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
18.01.2019, 15:47
    #39761577
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Инициализировать работу с несколькими бд одновременно
Так попробуй
Код: sql
1.
UPDATE T1 SET Tabn = T2.Tabn FROM T2 WHERE T2.Tn_old = T1.Tn_old
...
Рейтинг: 0 / 0
18.01.2019, 15:47
    #39761579
Sergey Sizov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Инициализировать работу с несколькими бд одновременно
JamesMilner,

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


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