|
Инициализировать работу с несколькими бд одновременно
|
|||
---|---|---|---|
#18+
Всем привет! По работе понадобилось заменить данные столбцов между двумя 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 И аллисы, не догоняю как . Буду благодарен за советы ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2019, 10:17 |
|
Инициализировать работу с несколькими бд одновременно
|
|||
---|---|---|---|
#18+
JamesMilner, Код: sql 1. 2. 3.
Какие проблемы? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2019, 10:24 |
|
Инициализировать работу с несколькими бд одновременно
|
|||
---|---|---|---|
#18+
Sergey Sizov, я так и записал в командной строке, далее выскакивает Common Dialog для выбора DBF-файла и идёт ошибка ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2019, 10:45 |
|
Инициализировать работу с несколькими бд одновременно
|
|||
---|---|---|---|
#18+
JamesMilnerSergey Sizov, я так и записал в командной строке, далее выскакивает Common Dialog для выбора DBF-файла и идёт ошибкаН у так запросы надо правильно писать. Код: sql 1.
Объясните как вы себе представляете изменение таблицы Т1 при указании в качестве обновляемого поля другой таблицы? Зачем тут T2? Update не может менять поля другой таблицы. Да и сообщение об ошибке говорит отнюдь не об невозможности открытия таблиц из разныз баз. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2019, 11:15 |
|
Инициализировать работу с несколькими бд одновременно
|
|||
---|---|---|---|
#18+
Sergey Sizov, так я же не просто меняю столбцы местами между бд , а исходя из соответствия одного столбца в первой таблице и другого во второй. В чём именно я ошибся в составлении запроса, подскажите пожалуйста? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2019, 11:21 |
|
Инициализировать работу с несколькими бд одновременно
|
|||
---|---|---|---|
#18+
JamesMilnerSergey Sizov, так я же не просто меняю столбцы местами между бд ,Что за чушь? Что за операцию вы обозвали такими словами? Таблицы не могут меняться столбцами/колонками. Тем более, что их там и нет. Есть записи, разбитые на одинаковые поля. а исходя из соответствия одного столбца в первой таблице и другого во второй. В чём именно я ошибся в составлении запроса, подскажите пожалуйста?Я же написал. Если хотите менять значение поля в Т1, то надо писать UPDATE T1 SET Tabn ... Если хотите менять значение поля в Т2, то надо писать UPDATE T2 SET Tabn ... А не изобретать собственную логику. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2019, 11:33 |
|
Инициализировать работу с несколькими бд одновременно
|
|||
---|---|---|---|
#18+
Sergey Sizov, есть условное поле tabn , в нём присутствую старые значения. Оно находится в бд T1. А есть аналогичное поле tabn в бд T2, но у них другие значения. Значения в поле T1.tabn имеют соответствия со значениями в поле T2.Tabn_old. Вот мне и нужно заменить значения в полях tabn в обоих бд между собой иcходя из имеющейся аналогии ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2019, 11:40 |
|
Инициализировать работу с несколькими бд одновременно
|
|||
---|---|---|---|
#18+
JamesMilnerSergey Sizov, есть условное поле tabn , в нём присутствую старые значения. Оно находится в бд T1. А есть аналогичное поле tabn в бд T2, но у них другие значения. Значения в поле T1.tabn имеют соответствия со значениями в поле T2.Tabn_old. Вот мне и нужно заменить значения в полях tabn в обоих бд между собой иcходя из имеющейся аналогииЕсли вы думаете, что объясняете понятно, то очень сильно ошибаетесь. Одним запросом две таблицы не меняются, только одна. Соответственно, нужны как минимум два запроса на обновление. Приведите примеры данных и опишите логику их обработки с указанием результата, который надо получить. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2019, 11:57 |
|
Инициализировать работу с несколькими бд одновременно
|
|||
---|---|---|---|
#18+
если все так запущено, то не проще ли 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 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2019, 13:00 |
|
Инициализировать работу с несколькими бд одновременно
|
|||
---|---|---|---|
#18+
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, которые одинаковы в обоих базах ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2019, 14:39 |
|
Инициализировать работу с несколькими бд одновременно
|
|||
---|---|---|---|
#18+
Так попробуй Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2019, 15:47 |
|
Инициализировать работу с несколькими бд одновременно
|
|||
---|---|---|---|
#18+
JamesMilner, 1. В базах нет полей, они есть в таблицах. В базах есть таблицы. 2. Как изменить значения в одной таблице данными из другой Пример с Update как раз по теме. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2019, 15:47 |
|
|
start [/forum/topic.php?fid=41&fpage=8&tid=1581704]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
26ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
others: | 311ms |
total: | 427ms |
0 / 0 |