powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Помогите примером обработки двух таблиц
11 сообщений из 11, страница 1 из 1
Помогите примером обработки двух таблиц
    #32401096
Nnord
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
есть две дбф таблицы, структура одинаковая, (поля с 1 по 3).
количество записей в каждой около 20 000,
как на фоксе внести в первую таблицу значение поля 3
при условии совпадения по первым двум ?

- времени не хватает на "изучение с нуля", на готовом примере
будет легче научиться...
...
Рейтинг: 0 / 0
Помогите примером обработки двух таблиц
    #32401126
IgorProgrammer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Неочень умно...
но довольно просто...
sele tab2
scan
sele tab1
loca for pole1 = tab2.pole1 and pole2 = tab2.pole2
if found()
repla pole3 with tab2.pole3 in tab1
endif
endscan
...
Рейтинг: 0 / 0
Помогите примером обработки двух таблиц
    #32401154
Nnord
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а сколько по-времени будет выполняться такой перебор?
20000 * 20000 записей...
...
Рейтинг: 0 / 0
Помогите примером обработки двух таблиц
    #32401167
IgorProgrammer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nnord:

а сколько по-времени будет выполняться такой перебор?
20000 * 20000 записей...


Если сделать индексы по двум искомым полям,
то довольно шустро...

Можно еще через update

update tab1 set pole3=tab2.pole3 where EXISTS(sele * from tab2 where pole1=tab1.pole1 and pole2=tab1.pole2)
...
Рейтинг: 0 / 0
Помогите примером обработки двух таблиц
    #32401176
Фотография Hel!Riser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можна сдлеать и так
создать составной индекс Field1+Field2 в таблице2
установить реляцию первой со фторой SET RELATION TO Field1+Field2 INTO Tab2
и выполнить REPLACE Field3 WITH Tab2.Field3 FOR FOUND('Tab2')
...
Рейтинг: 0 / 0
Помогите примером обработки двух таблиц
    #32401213
andrew_Pr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для Nnord-а, "изучающего с нуля", важное дополнение к примеру Hel!Riser-а:
составной индекс Field1+Field2 годится только, если поля Field1 и Field2 -
символьные! Если Field1 и Field2 - числовые, то нужно str(Field1)+str(Field2 )
или bintoc(Field1)+bintoc(Field2) !
А Update в примере IgorProgrammer вообще не годится. Не вздумай
воспользоваться, испортишь всю таблицу!
...
Рейтинг: 0 / 0
Помогите примером обработки двух таблиц
    #32401242
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если уж совсем поправлять пример от Hel!Riser, то там и RELATION не нужен. Достаточно факта наличия такого индекса. Тогда:

select Tab1
REPLACE Field3 WITH Tab2.Field3 ;
FOR SEEK(Tab1.Field1+Tab1.Field2,"Tab2","название тэга по этому ключу")
...
Рейтинг: 0 / 0
Помогите примером обработки двух таблиц
    #32401287
andrew_Pr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to ВладимирМ
Использовать Set relation или же For Seek() - дело вкуса.
А вот составной индекс по числовым полям - это "подводный камень",
на который человек "изучающий с нуля" может здорово напороться.
Ибо никаких сообщений об ошибке Фокс не выдаст, и результат может
в частном случае оказаться правильным. Но на самом деле, связка
между таблицами будет "кривой".
...
Рейтинг: 0 / 0
Помогите примером обработки двух таблиц
    #32401754
VadimS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно все таки попробовать через UPDATE: UPDATE tab1 set tab1.pole3 = (SELECT TOP 1 tab2.pole3 FROM tab2 WHERE tab2.pole1=tab1.pole1 AND tab2.pole2 = tab1.pole2)
...
Рейтинг: 0 / 0
Помогите примером обработки двух таблиц
    #32401914
Nnord
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо всем, пробую со всем этим разобраться!
...
Рейтинг: 0 / 0
Помогите примером обработки двух таблиц
    #32402661
VitalyT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
To VadimS

Можно все таки попробовать через UPDATE: UPDATE tab1 set tab1.pole3 = (SELECT TOP 1 tab2.pole3 FROM tab2 WHERE tab2.pole1=tab1.pole1 AND tab2.pole2 = tab1.pole2)

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


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