|
|
|
Сравнение двух таблиц
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток! Подскажите новичку в VFP как лучше сделать: есть две таблицы одинаковой структуры, огромные по размеру (примерно 60 метров, 103 поля). Требуется из этих двух таблиц получить третью, в которой должны быть только те записи, на которые различаются те двое. Какой функцией лучше воспользоваться? Простите, если вопрос глупый. Но очень надо... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2007, 17:09 |
|
||
|
Сравнение двух таблиц
|
|||
|---|---|---|---|
|
#18+
SELECT * FROM perva a WHERE ; not EXISTS (SELECT * FROM druga.dbf b WHERE a.pole1 = b.pole2); INTO TABLE sss ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2007, 17:13 |
|
||
|
Сравнение двух таблиц
|
|||
|---|---|---|---|
|
#18+
Дело в том, что полей у меня целых 103, и когда такое длинное выражение я вставляю в select, то запрос просто вылетает в ошибку ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2007, 17:18 |
|
||
|
Сравнение двух таблиц
|
|||
|---|---|---|---|
|
#18+
Не знаю, выдержит ли запрос 103 поля, но можешь попробовать так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Правда, в данном случае предполагается, что в каждой таблице не может быть дублей. В противном случае, надо исключить дубли до объединения таблиц. Если запрос такое количество полей не выдержит, то останется "в тупую" перебирать все строки обеих таблиц и также "в тупую" перебирать все 103 поля для каждой пары сравниваемых записей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2007, 19:14 |
|
||
|
Сравнение двух таблиц
|
|||
|---|---|---|---|
|
#18+
ВладимирМНе знаю, выдержит ли запрос 103 поля... Можно попробовать =SYS(3055,2040), хотя эта функция и не относится напрямую к Group... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2007, 20:21 |
|
||
|
Сравнение двух таблиц
|
|||
|---|---|---|---|
|
#18+
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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2007, 08:12 |
|
||
|
Сравнение двух таблиц
|
|||
|---|---|---|---|
|
#18+
или так : 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2007, 08:19 |
|
||
|
Сравнение двух таблиц
|
|||
|---|---|---|---|
|
#18+
P.S. ...не пойму при чём здесь количество полей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2007, 08:22 |
|
||
|
Сравнение двух таблиц
|
|||
|---|---|---|---|
|
#18+
Количсество полей видимо при том, что оно в двух таблицах неодинаковое. Так, автор? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2007, 10:36 |
|
||
|
Сравнение двух таблиц
|
|||
|---|---|---|---|
|
#18+
лишь бы идентификаторы были одинаковые в обеих таблицах... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2007, 11:10 |
|
||
|
Сравнение двух таблиц
|
|||
|---|---|---|---|
|
#18+
Количество полей в обеих таблицах одинаковое. Щас пытаюсь сделать через SCATTER копирование в одномерный массив с последующим сравнением по ячейкам. Вроде что-то получается... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2007, 13:12 |
|
||
|
Сравнение двух таблиц
|
|||
|---|---|---|---|
|
#18+
skeloP.S. ...не пойму при чём здесь количество полей Если я правильно понял вопрос, то проблема в том, что таблицы не имеют уникального идентификатора записи. Т.е. для того, чтобы ответить на вопрос: отличается ли вот эта запись первой таблицы от вот этой записью второй таблицы необходимо сравнить ВСЕ поля в каждой записи. А это означает, что никакие "выкрутасы" с индексами - не помогут. Нужен индекс, включающий в себя содержимое ВСЕХ полей. Чего не выдержит ни один индекс. Ну, кроме случая "свертки" значения полей по каким-либо алгоритмам. Но для этого надо знать струкутуру и примерное содержимое таблиц. В приниципе, написать процедуру сравнения не сложно. Даже в общем случае. Просто работать она будет относительно медленно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2007, 14:26 |
|
||
|
Сравнение двух таблиц
|
|||
|---|---|---|---|
|
#18+
Ребята, большое спасибо всем за помощь :о) Получилось у меня это сравнение, таблицы по 39000 строк и 133 поля сравниваются за 4 с небольшим минуты, результат удовлетворил. Если будут такие же ищущие чайники вроде меня, так сказать.... пишите на lilian2001@e-mail.ru, вышлю код, засорять здесь форум не буду Всем удачи! :о) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2007, 07:27 |
|
||
|
|

start [/forum/topic.php?fid=41&fpage=212&tid=1589851]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
26ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 242ms |
| total: | 353ms |

| 0 / 0 |
