Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Помогите примером обработки двух таблиц
|
|||
|---|---|---|---|
|
#18+
есть две дбф таблицы, структура одинаковая, (поля с 1 по 3). количество записей в каждой около 20 000, как на фоксе внести в первую таблицу значение поля 3 при условии совпадения по первым двум ? - времени не хватает на "изучение с нуля", на готовом примере будет легче научиться... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2004, 16:30 |
|
||
|
Помогите примером обработки двух таблиц
|
|||
|---|---|---|---|
|
#18+
Неочень умно... но довольно просто... 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2004, 16:48 |
|
||
|
Помогите примером обработки двух таблиц
|
|||
|---|---|---|---|
|
#18+
а сколько по-времени будет выполняться такой перебор? 20000 * 20000 записей... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2004, 17:03 |
|
||
|
Помогите примером обработки двух таблиц
|
|||
|---|---|---|---|
|
#18+
Nnord: а сколько по-времени будет выполняться такой перебор? 20000 * 20000 записей... Если сделать индексы по двум искомым полям, то довольно шустро... Можно еще через update update tab1 set pole3=tab2.pole3 where EXISTS(sele * from tab2 where pole1=tab1.pole1 and pole2=tab1.pole2) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2004, 17:08 |
|
||
|
Помогите примером обработки двух таблиц
|
|||
|---|---|---|---|
|
#18+
можна сдлеать и так создать составной индекс Field1+Field2 в таблице2 установить реляцию первой со фторой SET RELATION TO Field1+Field2 INTO Tab2 и выполнить REPLACE Field3 WITH Tab2.Field3 FOR FOUND('Tab2') ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2004, 17:13 |
|
||
|
Помогите примером обработки двух таблиц
|
|||
|---|---|---|---|
|
#18+
Для Nnord-а, "изучающего с нуля", важное дополнение к примеру Hel!Riser-а: составной индекс Field1+Field2 годится только, если поля Field1 и Field2 - символьные! Если Field1 и Field2 - числовые, то нужно str(Field1)+str(Field2 ) или bintoc(Field1)+bintoc(Field2) ! А Update в примере IgorProgrammer вообще не годится. Не вздумай воспользоваться, испортишь всю таблицу! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2004, 17:43 |
|
||
|
Помогите примером обработки двух таблиц
|
|||
|---|---|---|---|
|
#18+
Если уж совсем поправлять пример от Hel!Riser, то там и RELATION не нужен. Достаточно факта наличия такого индекса. Тогда: select Tab1 REPLACE Field3 WITH Tab2.Field3 ; FOR SEEK(Tab1.Field1+Tab1.Field2,"Tab2","название тэга по этому ключу") ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2004, 18:09 |
|
||
|
Помогите примером обработки двух таблиц
|
|||
|---|---|---|---|
|
#18+
to ВладимирМ Использовать Set relation или же For Seek() - дело вкуса. А вот составной индекс по числовым полям - это "подводный камень", на который человек "изучающий с нуля" может здорово напороться. Ибо никаких сообщений об ошибке Фокс не выдаст, и результат может в частном случае оказаться правильным. Но на самом деле, связка между таблицами будет "кривой". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2004, 18:47 |
|
||
|
Помогите примером обработки двух таблиц
|
|||
|---|---|---|---|
|
#18+
Можно все таки попробовать через UPDATE: UPDATE tab1 set tab1.pole3 = (SELECT TOP 1 tab2.pole3 FROM tab2 WHERE tab2.pole1=tab1.pole1 AND tab2.pole2 = tab1.pole2) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2004, 21:17 |
|
||
|
Помогите примером обработки двух таблиц
|
|||
|---|---|---|---|
|
#18+
Спасибо всем, пробую со всем этим разобраться! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2004, 16:22 |
|
||
|
Помогите примером обработки двух таблиц
|
|||
|---|---|---|---|
|
#18+
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) Эта конструкция "не работает". Фоксу не хватает закрывающейся скобки ")". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2004, 13:42 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=32401754&tid=1597220]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
3ms |
track hit: |
156ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
| others: | 271ms |
| total: | 522ms |

| 0 / 0 |
