Unir registros.

1,199 views
Skip to first unread message

Carlos Alberto Cisneros Madrid

unread,
Mar 19, 2012, 3:16:36 PM3/19/12
to VFP publicesvfoxpro@googlegroups.com
Buenas tardes compañerpos, alguien me puede escribir alguna forma mas facil para unir los registros entre dos bases de datos, es porque se decidio actualizar informacion antigua mientras otro continuaba con la actual, al final debo unir ambos registros, si saben como se hace mas facil me ayudaria, gracias.

Miguel

unread,
Mar 19, 2012, 3:28:26 PM3/19/12
to Comunidad de Visual Foxpro en Español
Lo primero que tendrás que hacer es relacionar ambas tablas por un
campo común, que tienes que tener un indice, algo así:
selec a
use tabla1 order campo1
sele b
use tabla2
set relation to campo1 into a
go top

El campo2 de la tabla1 te puedes referir a él como: tabla1.campo2, o
también como: a->campo2
El campo2 de la tabla2 estás en ella, o sea que si no cambias de área
será campo2 sin más.
Tú verás qué quieres hacer para unirlos: campo2=campo2+a->campo2 por
ejemplo?.


On 19 mar, 20:16, "Carlos Alberto Cisneros Madrid "

Carlos Alberto Cisneros Madrid

unread,
Mar 19, 2012, 3:37:15 PM3/19/12
to publice...@googlegroups.com
La verdad ese proceso solo se hace una sola vez, en vez de usar replacements querria otra forma mas rapida como el append from.

Carlos Miguel FARIAS

unread,
Mar 19, 2012, 7:36:43 PM3/19/12
to publice...@googlegroups.com
Queres unir o queres juntar, son dos cosas diferentes.
Unir sería como unificar en una sola tabla, datos de entidades (cosas, objetos) comunes o muy parecidos en una sola tabla o cursor.
Juntar (en los viejos tiempos, aparear registros) es tomar datos de tablas disimiles enlazados por algún/os campo/s en común.
Saludos: Miguel, La Pampa (RA)

TheNewInquirer

unread,
Mar 19, 2012, 9:56:21 PM3/19/12
to Comunidad de Visual Foxpro en Español
No se pero la ayuda de UNION dice:

The UNION clause combines the results from two or more SQL SELECT
statements into a single result set containing rows from all the
queries in the UNION operation.

MarceloBuenosAires

unread,
Mar 1, 2012, 5:44:42 AM3/1/12
to publice...@googlegroups.com
La traduccion es...

La clausula UNION combina los resultados de 2 o mas
comandos SELECT - SQL en un unico conjunto de resultado
conteniendo filas de todas las consultas en la operacion UNION

Saludos
MarceloBuenosAires
_________________________-

El 19/03/2012 10:56 p.m., TheNewInquirer escribi�:

mpulla

unread,
Mar 20, 2012, 7:26:46 AM3/20/12
to Comunidad de Visual Foxpro en Español
Hola Carlos Alberto.

Si quieres insertar solamente data de otra tabla verificando que no
exista y tienes Vfp 8 o superior prueba

Para ejemplo campo1 es la llave de la tabla.

insert into c:\dataold\tabla1;
(campo1, campo2, campo3);
Select a.campo1, a.campo2, a.campo3;
From c:\datanueva\tabla1 as a;
left join tabla1 as b On a.campo1=b.campo1;
where isnull(b.campo1)

Saludos.
Mauricio

Carlos Alberto Cisneros Madrid

unread,
Mar 20, 2012, 7:31:25 AM3/20/12
to publice...@googlegroups.com
Quize decir unir registros, tres tablas con igualdad de campos solo que ubicadas en tres computadores diferentes, una en cada una. La computadora A tiene info de enero, la computadora B tiene info de febrero y la computadora C tiene info actual. Ahora quiero unir toda la info en una sola computadora, en la computadora C.

Carlos Miguel FARIAS

unread,
Mar 20, 2012, 8:11:12 AM3/20/12
to publice...@googlegroups.com
Entonces si, usando tres comandos select "unidos" con UNION, podes
generar una tabla que contenga los registros de las tres tablas
Abris las tres tablas
USE {ruta}/tabla1 IN 0
USE {ruta}/tabla2 IN 0
USE {ruta}/tabla3 IN 0

SELECT * FROM tabla1 INTO CURSOR todoJunto;
UNION;
SELECT * FROM tabla2
UNION;
SELECT * FROM tabla3

Si hay campos diferentes, o no se necesita juntar, tendrás que
enumerarlos en cada caso.
Saludos: Santa Rosa (LP)


El 20/03/12, Carlos Alberto Cisneros Madrid <ccis...@hotmail.com> escribió:


> Quize decir unir registros, tres tablas con igualdad de campos solo que
> ubicadas en tres computadores diferentes, una en cada una. La computadora A
> tiene info de enero, la computadora B tiene info de febrero y la computadora
> C tiene info actual. Ahora quiero unir toda la info en una sola computadora,
> en la computadora C.
>
>
> -----Original Message-----
> From: Carlos Miguel FARIAS
> Sent: 3/19/2012 11:36:43 PM
> To: publice...@googlegroups.com
> Subject: Re: [vfp] Re: Unir registros.
> Queres unir o queres juntar, son dos cosas diferentes.
> Unir sería como unificar en una sola tabla, datos de entidades (cosas,
> objetos) comunes o muy parecidos en una sola tabla o cursor.
> Juntar (en los viejos tiempos, aparear registros) es tomar datos de tablas
> disimiles enlazados por algún/os campo/s en común.
> Saludos: Miguel, La Pampa (RA)
>
> El 19 de marzo de 2012 16:37, Carlos Alberto Cisneros Madrid

> <ccis...@hotmail.com<mailto:ccis...@hotmail.com>> escribió:


> La verdad ese proceso solo se hace una sola vez, en vez de usar replacements
> querria otra forma mas rapida como el append from.
>
>
> -----Original Message-----
> From: Miguel
> Sent: 3/19/2012 7:28:26 PM
> To: Comunidad de Visual Foxpro en Español
> Subject: [vfp] Re: Unir registros.
> Lo primero que tendrás que hacer es relacionar ambas tablas por un
> campo común, que tienes que tener un indice, algo así:
> selec a
> use tabla1 order campo1
> sele b
> use tabla2
> set relation to campo1 into a
> go top
>
> El campo2 de la tabla1 te puedes referir a él como: tabla1.campo2, o
> también como: a->campo2
> El campo2 de la tabla2 estás en ella, o sea que si no cambias de área
> será campo2 sin más.
> Tú verás qué quieres hacer para unirlos: campo2=campo2+a->campo2 por
> ejemplo?.
>
>
> On 19 mar, 20:16, "Carlos Alberto Cisneros Madrid "

Daniel Sánchez

unread,
Mar 20, 2012, 10:24:52 AM3/20/12
to publice...@googlegroups.com
Una pregunta similar realizaron en otro hilo, aparentemente tenia 2 bd idénticas en tablas tanto nombre como campos, y deseaba actualizar la información de una a la otra, el inconveniente que tenia era que no podía tener las 2 bd abiertas a la vez o acceder a ambas al mismo tiempo, en realidad se le indico cierta forma de migrar dichos datos pero no comento el resultado final.
En todo caso mi recomendación seria la siguiente crear un procedimiento general para la captura u obtención de la información de la primera BD, obtener todos los nombres de las tablas y realizar un select sql (select * from tablax into cursor cursorx) para obtener la información de cada tabla de la primera bd, luego cerrar o cambiar a la otra BD y realizar una inserción de los datos de los cursores obtenidos con los select con un append from dbf("nombrecursor"), esa sería la forma más rápida de lograrlo y con menos código, al menos eso me parece a primera intención.

Saludos

-- 
Daniel Sánchez Escobar
Investigación y Desarrollo
Reset Software & Sistemas
Móvil +051-949398047
Trujillo - Perú

Carlos Miguel FARIAS

unread,
Mar 20, 2012, 5:14:42 PM3/20/12
to publice...@googlegroups.com
Lo que no aclaró como lo soluciono, porque en principio las bd abiertas se puede, lo que pase que debes calificar los nombres de las tablas, no se si opción la utilizo.
Si tiene vfp 9 puede hacer tambien un INSERT INTO ... SELECT * FROM para agregar al cursor.
Saludos: Miguel, Santa Rosa (LP)
Reply all
Reply to author
Forward
0 new messages