powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Сравнение двух таблиц
13 сообщений из 13, страница 1 из 1
Сравнение двух таблиц
    #34324665
Lilian89
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток!
Подскажите новичку в VFP как лучше сделать: есть две таблицы одинаковой структуры, огромные по размеру (примерно 60 метров, 103 поля). Требуется из этих двух таблиц получить третью, в которой должны быть только те записи, на которые различаются те двое. Какой функцией лучше воспользоваться? Простите, если вопрос глупый. Но очень надо...
...
Рейтинг: 0 / 0
Сравнение двух таблиц
    #34324679
skelo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SELECT * FROM perva a WHERE ;
not EXISTS (SELECT * FROM druga.dbf b WHERE a.pole1 = b.pole2);
INTO TABLE sss
...
Рейтинг: 0 / 0
Сравнение двух таблиц
    #34324699
Lilian89
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дело в том, что полей у меня целых 103, и когда такое длинное выражение я вставляю в select, то запрос просто вылетает в ошибку
...
Рейтинг: 0 / 0
Сравнение двух таблиц
    #34325099
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не знаю, выдержит ли запрос 103 поля, но можешь попробовать так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
select * from Tab1 ;
INTO CURSOR curTotal NOFILTER ;
UNION ALL ;
select * from Tab2

select * from curTotal ;
GROUP BY ;
Field1, ;
Field2, ;
Field3, ;
...
Field100, ;
Field101, ;
Field102, ;
Field103 ;
HAVING Count(*)= 1 

Правда, в данном случае предполагается, что в каждой таблице не может быть дублей. В противном случае, надо исключить дубли до объединения таблиц.

Если запрос такое количество полей не выдержит, то останется "в тупую" перебирать все строки обеих таблиц и также "в тупую" перебирать все 103 поля для каждой пары сравниваемых записей.
...
Рейтинг: 0 / 0
Сравнение двух таблиц
    #34325272
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМНе знаю, выдержит ли запрос 103 поля...
Можно попробовать =SYS(3055,2040), хотя эта функция и не относится напрямую к Group...
...
Рейтинг: 0 / 0
Сравнение двух таблиц
    #34325773
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lilian89Доброго времени суток!
Подскажите новичку в VFP как лучше сделать: есть две таблицы одинаковой структуры, огромные по размеру (примерно 60 метров, 103 поля). Требуется из этих двух таблиц получить третью, в которой должны быть только те записи, на которые различаются те двое. Какой функцией лучше воспользоваться? Простите, если вопрос глупый. Но очень надо...

можно код написать. Примерно такой:
выбираешь какое-нибудь поле, которое как можно меньше повторов содержит. Допустим f1 (можно несколько полей)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
set deleted on
sele t1
index on f1 tag f1
copy file t2.dbf to r2.dbf
sele  0 
* Удаляем в r2 записи имеющиеся в t1
use r2 excl
scan
       if indexseek(r2.f1, .t., 't1', 'f1')
          sele t1
          scan rest while r2.f1 = t1.f1
                if r2.f2 = t1.f2 and r2.f2 = t1.f2 and ... r2.f103 = t1.f103
                   delete in r2
                   exit
                endif
          endscan
       endif
endscan
... меняем местами t1 и t2 и получаем r1 также
sele r1
append from r2
pack
...
Рейтинг: 0 / 0
Сравнение двух таблиц
    #34325781
skelo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
или так :
USE perva.dbf in 2
select 2
DELETE TAG ALL
INDEX ON gr_cod4 TAG gr_cod4 ADDITIVE
UPDATE ON gr_cod4 FROM druga REPLACE perva.gr_colu10 WITH 'e'
delete for perva.gr_col11 = 'e'
pack
...
Рейтинг: 0 / 0
Сравнение двух таблиц
    #34325786
skelo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
P.S. ...не пойму при чём здесь количество полей
...
Рейтинг: 0 / 0
Сравнение двух таблиц
    #34326151
Solmyr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Количсество полей видимо при том, что оно в двух таблицах неодинаковое.
Так, автор?
...
Рейтинг: 0 / 0
Сравнение двух таблиц
    #34326292
skelo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
лишь бы идентификаторы были одинаковые в обеих таблицах...
...
Рейтинг: 0 / 0
Сравнение двух таблиц
    #34326866
Lilian89
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Количество полей в обеих таблицах одинаковое. Щас пытаюсь сделать через SCATTER копирование в одномерный массив с последующим сравнением по ячейкам. Вроде что-то получается...
...
Рейтинг: 0 / 0
Сравнение двух таблиц
    #34327215
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skeloP.S. ...не пойму при чём здесь количество полей
Если я правильно понял вопрос, то проблема в том, что таблицы не имеют уникального идентификатора записи. Т.е. для того, чтобы ответить на вопрос: отличается ли вот эта запись первой таблицы от вот этой записью второй таблицы необходимо сравнить ВСЕ поля в каждой записи.

А это означает, что никакие "выкрутасы" с индексами - не помогут. Нужен индекс, включающий в себя содержимое ВСЕХ полей. Чего не выдержит ни один индекс. Ну, кроме случая "свертки" значения полей по каким-либо алгоритмам. Но для этого надо знать струкутуру и примерное содержимое таблиц.

В приниципе, написать процедуру сравнения не сложно. Даже в общем случае. Просто работать она будет относительно медленно.
...
Рейтинг: 0 / 0
Сравнение двух таблиц
    #34345613
Lilian89
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ребята, большое спасибо всем за помощь :о)
Получилось у меня это сравнение, таблицы по 39000 строк и 133 поля сравниваются за 4 с небольшим минуты, результат удовлетворил. Если будут такие же ищущие чайники вроде меня, так сказать.... пишите на lilian2001@e-mail.ru, вышлю код, засорять здесь форум не буду

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


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