
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
¿Como puedo unir 2 tablas de diferentes bases de datos en script de SQL?
Hola comunidad!
existe alguan forma de unir 2 tablas de diferentes bases de datos en el script de SQL?
tengo las siguientes tablas:
Tabla1: | Tabla2: |
SQL SELECT | SQL SELECT |
CLASE_MATERIAL, | CAJAS, |
#MATERIAL, | MATERIAL, |
#CENTRO, | ESTATUS, |
STOCK_TOTAL, | CENTRO, |
VALOR_TOTAL | PROVEEDOR, |
SALIDAS, | |
FROM BD1; | #MATERIAL, |
#CENTRO, | |
#PROVEEDOR | |
FROM BD2 |
los campos en comun son #MATERIAL, #CENTRO, y necesito que la tabla dominante sea tabla 1.
saludos
- Tags:
- Group_Discussions
Accepted Solutions


- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hola Agustín,
Por lo que veo tienes 2 opciones:
a.- Crear un campo único de la unión de los 2 campos comunes: #CENTRO&'-'&#MATERIAL y automaticamente se unirán las tablas.
b.- Hacer un JOIN entre las 2 tablas, en concreto LEFT JOIN que predomine Tabla1 sobre Tabla 2.
Saludos.


- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hola Agustín,
Por lo que veo tienes 2 opciones:
a.- Crear un campo único de la unión de los 2 campos comunes: #CENTRO&'-'&#MATERIAL y automaticamente se unirán las tablas.
b.- Hacer un JOIN entre las 2 tablas, en concreto LEFT JOIN que predomine Tabla1 sobre Tabla 2.
Saludos.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hola Alexis;
pregunta para la opcion b necesito hacer Previamente el LOAD en el script;?
ejemplo:
Tabla1:
Load
CLASE_MATERIAL,
#MATERIAL,
#CENTRO,
STOCK_TOTAL,
VALOR_TOTAL;
SQL SELECT
CLASE_MATERIAL,
#MATERIAL,
#CENTRO,
STOCK_TOTAL,
VALOR_TOTAL
FROM BD1
left join( Tabla1)
Tabla2:
load
SQL SELECT
CAJAS,
MATERIAL,
ESTATUS,
CENTRO,
PROVEEDOR,
SALIDAS,
#MATERIAL,
#CENTRO,
#PROVEEDOR
SQL_SELECT
CAJAS,
MATERIAL,
ESTATUS,
CENTRO,
PROVEEDOR,
SALIDAS,
#MATERIAL,
#CENTRO,
#PROVEEDOR
FROM BD2;
saludos


- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hola Agustín,
Creo que no es necesario.
Prueba a hacerlo sin LOAD.
Saludos.


- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hola Agustin:
Este es el código de tu script
Tabla1:
Load
CLASE_MATERIAL,
#MATERIAL,
#CENTRO,
STOCK_TOTAL,
VALOR_TOTAL;
SQL SELECT
CLASE_MATERIAL,
#MATERIAL,
#CENTRO,
STOCK_TOTAL,
VALOR_TOTAL
FROM BD1
left join( Tabla1)
Tabla2:
load
CAJAS,
MATERIAL,
ESTATUS,
CENTRO,
PROVEEDOR,
SALIDAS,
#MATERIAL,
#CENTRO,
#PROVEEDOR;
SQL_SELECT
CAJAS,
MATERIAL,
ESTATUS,
CENTRO,
PROVEEDOR,
SALIDAS,
#MATERIAL,
#CENTRO,
#PROVEEDOR
FROM BD2;
Debes tener en cuenta que si en la tabla 1 tienes este registro
CLASE_MATERIAL = X
#MATERIAL = A
#CENTRO = Norte
STOCK_TOTAL = 100
VALOR_TOTAL = 1000
y en la tabla 2 estos dos
CAJAS = 25
MATERIAL = A
ESTATUS = Activo
CENTRO = Norte
PROVEEDOR = Pepe
SALIDAS 3
#MATERIA = A
#CENTRO = Norte
#PROVEEDOR = Pepe
CAJAS = 32
MATERIAL = A
ESTATUS = Inactivo
CENTRO = Norte
PROVEEDOR = Manolo
SALIDAS 4
#MATERIA = A
#CENTRO = Norte
#PROVEEDOR = Manolo
La tabla resultante de tu Join tendrá dos registros de estas características :
CLASE_MATERIAL = X
#MATERIAL = A
#CENTRO = Norte
STOCK_TOTAL = 100
VALOR_TOTAL = 1000
MATERIAL = A
ESTATUS = Activo
CENTRO = Norte
PROVEEDOR = Pepe
SALIDAS 3
#PROVEEDOR = Pepe
CLASE_MATERIAL = X
#MATERIAL = A
#CENTRO = Norte
STOCK_TOTAL = 100
VALOR_TOTAL = 1000
CAJAS = 32
MATERIAL = A
ESTATUS = Inactivo
CENTRO = Norte
PROVEEDOR = Manolo
SALIDAS 4
Doblando el valor de STOCK_TOTAL y VALOR_TOTAL
Saludos
Joaquín


- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hola Agustín:
Creo que necesitas esto
Tabla1:
Load
CLASE_MATERIAL,
(#MATERIAL & #CENTRO) as key
STOCK_TOTAL,
VALOR_TOTAL;
SQL SELECT
CLASE_MATERIAL,
#MATERIAL,
#CENTRO,
STOCK_TOTAL,
VALOR_TOTAL
FROM BD1
Tabla2:
load
CAJAS,
MATERIAL,
ESTATUS,
CENTRO,
PROVEEDOR,
SALIDAS,
(#MATERIAL & #CENTRO) as key,
#PROVEEDOR;
SQL_SELECT
CAJAS,
MATERIAL,
ESTATUS,
CENTRO,
PROVEEDOR,
SALIDAS,
#MATERIAL,
#CENTRO,
#PROVEEDOR
FROM BD2;
Esto te creará dos tablas independientes vinculadas por el campo key y no multiplicará el VALOR_TOTAL por la cantidad de registros en la tabla 2
Saludos
Joaquín

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Joaquin:
gracias por la observacion, creo que es muy favorable tu explicación para comprender el funcionamiento y efectivamente la sugerencia que propones para solucionarlo fue de la primera que propuso Alexis, probe sus dos alternativas y pude validar lo que comentas y deacuerdo contigo la primera opcion que propuso Alexis de concatenar el campo fue la mejor opción.
saludos

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Alexis gracias como comente con Joaquin tu primera sugerencia fue la indicada y de acuerdo con su explicación es fácil comprender en que momentos podemos usar un join o la union de tablas por campos en comun.
saludos
