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

- времени не хватает на "изучение с нуля", на готовом примере
будет легче научиться...
...
Рейтинг: 0 / 0
06.02.2004, 16:48
    #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
06.02.2004, 17:03
    #32401154
Nnord
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите примером обработки двух таблиц
а сколько по-времени будет выполняться такой перебор?
20000 * 20000 записей...
...
Рейтинг: 0 / 0
06.02.2004, 17:08
    #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
06.02.2004, 17:13
    #32401176
Hel!Riser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите примером обработки двух таблиц
можна сдлеать и так
создать составной индекс Field1+Field2 в таблице2
установить реляцию первой со фторой SET RELATION TO Field1+Field2 INTO Tab2
и выполнить REPLACE Field3 WITH Tab2.Field3 FOR FOUND('Tab2')
...
Рейтинг: 0 / 0
06.02.2004, 17:43
    #32401213
andrew_Pr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите примером обработки двух таблиц
Для Nnord-а, "изучающего с нуля", важное дополнение к примеру Hel!Riser-а:
составной индекс Field1+Field2 годится только, если поля Field1 и Field2 -
символьные! Если Field1 и Field2 - числовые, то нужно str(Field1)+str(Field2 )
или bintoc(Field1)+bintoc(Field2) !
А Update в примере IgorProgrammer вообще не годится. Не вздумай
воспользоваться, испортишь всю таблицу!
...
Рейтинг: 0 / 0
06.02.2004, 18:09
    #32401242
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите примером обработки двух таблиц
Если уж совсем поправлять пример от Hel!Riser, то там и RELATION не нужен. Достаточно факта наличия такого индекса. Тогда:

select Tab1
REPLACE Field3 WITH Tab2.Field3 ;
FOR SEEK(Tab1.Field1+Tab1.Field2,"Tab2","название тэга по этому ключу")
...
Рейтинг: 0 / 0
06.02.2004, 18:47
    #32401287
andrew_Pr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите примером обработки двух таблиц
to ВладимирМ
Использовать Set relation или же For Seek() - дело вкуса.
А вот составной индекс по числовым полям - это "подводный камень",
на который человек "изучающий с нуля" может здорово напороться.
Ибо никаких сообщений об ошибке Фокс не выдаст, и результат может
в частном случае оказаться правильным. Но на самом деле, связка
между таблицами будет "кривой".
...
Рейтинг: 0 / 0
07.02.2004, 21:17
    #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
08.02.2004, 16:22
    #32401914
Nnord
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите примером обработки двух таблиц
Спасибо всем, пробую со всем этим разобраться!
...
Рейтинг: 0 / 0
09.02.2004, 13:42
    #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
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Помогите примером обработки двух таблиц / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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