Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
 Нужна помощь... Слить 2 DBF таблицы в одну...  [new]
CrazyPitbull
Member

Откуда:
Сообщений: 10
Есть такая проблемма, есть 2 DBF файла одинаковой структуры(одинаковые таблицы), в них есть как одинаковые записи так и разные. Нужна программка которая сможет обьединить эти файлы в третий, который будет хранить общую информацию обоих файлов (одинаковые записи недолжны дублироваться)... Есть ли какая программа для работы с DBF файлами, которая может так сливать файлы??? или может кто сам делал что-то на подобие, буду очень благодарен если поделетись! Заранее спасибо...
16 окт 04, 22:38    [1039622]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь... Слить 2 DBF таблицы в одну...  [new]
Burn
Member

Откуда: Днепропетровск, Украина
Сообщений: 1167
В поиск.
Тем про сравнение файлов с решениями полно.

P.S.В общем виде задача не решаемая
16 окт 04, 23:06    [1039627]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь... Слить 2 DBF таблицы в одну...  [new]
CrazyPitbull
Member

Откуда:
Сообщений: 10
Я видел большое колличество программ для просмотра DBF файлов, кроме того можно редактировать и добавлять новые записи... Поэтому решил, что может быть есть полезная программа которая может из двух файлов собрать один содержащий общую информацию без повторений одинаковой информации
16 окт 04, 23:11    [1039629]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь... Слить 2 DBF таблицы в одну...  [new]
Denis-Sumy
Guest
Попробуй запросом, что-то вроде такого

a1 -таблица 1
b1 - таблица 2
key - ключевое поле (может быть несколько символьных полей поле1+поле2+...)

SELECT distinct a1.* ; && получаем данные первой таблицы которые
from a1 , b1; && совподают с данными второй таблицы
WHERE a1.key = b1.key;
union;
SELECT distinct b1.* ; && добавляем данные второй таблицы которых
from b1; && нет в первой таблице
WHERE b1.key NOT IN (select a1.key FROM a1);
union;
SELECT distinct a1.* ; && добавляем данные первой таблицы которых
from a1; && нет во второй таблице
WHERE a1.key NOT in (select b1.key FROM b1);
INTO TABLE c:\rezult
17 окт 04, 14:30    [1039784]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь... Слить 2 DBF таблицы в одну...  [new]
Igor Korolyov
Member

Откуда: Гомель, Беларусь
Сообщений: 2512

Hi CrazyPitbull!

Если бы ты мог формально описать что есть ОДИНАКОВАЯ ИНФОРМАЦИЯ, то возможно
кто-нить и написал бы тебе программу-утилиту. И даже совершенно
безвозмездно, т.е. даром :)
Например при структуре
field1, field2,...fieldN - по каким полям надо сравнивать инфу? По всем? Но
тогда любой Candidate/Primary Key индекс не даст тебе объединить данные.
Скажем если есть такой индекс по Field1, А в tbl1 и tbl2 имеются 2 записи с
одинаковыми значениями в field1 но разными в прочих полях, то что
делать?

В общем случае задача решается так:
SELECT * FROM tbl1 WHERE NOT EXIST (SELECT * FROM tbl2 WHERE tbl2.field1 == 
tbl1.field1 AND tbl2.field2 == tbl1.field2 AND ...) INTO CURSOR csr2Add
SELECT tbl2
APPEND FROM DBF("csr2Add")
* теперь в tbl2 результат слияния
* можно конечно и в другую таблицу скопировать
Начиная с VFP8 и того проще - в одну строку :)
INSERT INTO tbl2 SELECT * FROM tbl1 WHERE NOT EXISTS (SELECT * FROM tbl2 
WHERE tbl2.nid == tbl1.nid)
А вот какие поля перечислять в подзапросе, по каким выбирать
"одинаково/неодинаково"... вот тут то и будет самая главная проблема :)
Да, ещё - эту конструкцию (запрос) можно формировать и динамически - на
основе информации AFIELDS() - и потом запускать через макро. Тогда лучше для
верности и поля по именам прописать, а то мало-ли, вдруг порядок их
отличается в "сливаемых" таблицах...

Posted via ActualForum NNTP Server 1.0

17 окт 04, 20:46    [1039999]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Нужна помощь... Слить 2 DBF таблицы в одну...  [new]
schcool
Member

Откуда:
Сообщений: 3
У меня аналогичная ситуация!!!! ПОМОГИТЕ!!!!!!! ГОРЮ!!!!

Ситуация такова - имеются две таблицы dbf, которые находятся в разных директориях.
Таблица 1 - xxx.dbf с полями: Xtitle1, Xtitle2, Xtitle3, Xtitle4
Таблица 2 - yyy.dbf с полями Ytitle1, Ytitle2, Ytitle3.

В этих таблицах Xtitle3=Ytitle1

Необходимо третью таблицу с любым именем в любом месте, с полями: Ytitle1, Ytitle2, Xtitle1, на основе талицы 2, т.е. только с данными, которые содержатся в таблице 2 и соответствующие данные из таблицы 1.

И если Вас не затруднит - по подробнее! Простите делитанта!
14 апр 09, 17:45    [7063223]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь... Слить 2 DBF таблицы в одну...  [new]
scelo
Member

Откуда:
Сообщений: 14
append from
- а слово делитант пишется : дилетант...
14 апр 09, 17:57    [7063312]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь... Слить 2 DBF таблицы в одну...  [new]
=-O
Guest
schcool
У меня аналогичная ситуация!!!! ПОМОГИТЕ!!!!!!! ГОРЮ!!!!

Ситуация такова - имеются две таблицы dbf, которые находятся в разных директориях.
Таблица 1 - xxx.dbf с полями: Xtitle1, Xtitle2, Xtitle3, Xtitle4
Таблица 2 - yyy.dbf с полями Ytitle1, Ytitle2, Ytitle3.

В этих таблицах Xtitle3=Ytitle1

Необходимо третью таблицу с любым именем в любом месте, с полями: Ytitle1, Ytitle2, Xtitle1, на основе талицы 2, т.е. только с данными, которые содержатся в таблице 2 и соответствующие данные из таблицы 1.

И если Вас не затруднит - по подробнее! Простите делитанта!

select Ytitle1, Ytitle2, Xtitle1 
from xxx
inner join yyy
on xxx.keyFields=yyy.keyFields
14 апр 09, 18:03    [7063346]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить