Documentaciónmezclar(tabla1, tabla2, campo_clave)
Nombre
mezclar - Une dos tablas por clave y fusiona los registros coincidentes.
Sinopsis
salida = tablas.mezclar(tabla1, tabla2, campo_clave)
Descripcion
Toma tabla1 como base y recorre tabla2 para incorporar registros nuevos o complementar los ya existentes cuando coinciden por campo_clave.
Si una clave aparece en ambas tablas, el registro de salida conserva la base de tabla1 y recibe los campos adicionales provenientes de tabla2.
Es util para:
- enriquecer una tabla con informacion adicional
- fusionar registros compatibles por una clave comun
- combinar dos fuentes sin perder los registros nuevos de
tabla2
Comportamiento
- Copia primero todos los registros de
tabla1. - Si una clave de
tabla2no existe en la salida, agrega el registro completo. - Si la clave ya existe, copia en el registro existente los campos de
tabla2distintos decampo_clave. - La salida puede contener registros fusionados y registros nuevos agregados.
Funciones API relacionadas
tablas.unir()tablas.left_join()tablas.intersectar()
Parámetros
| Parámetro | Tipo | Descripción |
|---|---|---|
| tabla1 | TABLA | Primera tabla. |
| tabla2 | TABLA | Segunda tabla. |
| campo_clave | STRING | Campo clave para mezclar. |
Valor de retorno
TABLA - Nueva tabla que parte de tabla1, agrega los registros nuevos de tabla2 y fusiona los coincidentes por clave.
Ejemplo
ejemplo.blox
INCLUIR "tablas.api"
INCLUIR "strings.api"
FUNCION PRINCIPAL
INICIO
TABLA amigos, colegas, juntos
NUMERICO i, val
STRING campo
amigos[1] = {
nombre = "Carlos",
edad = 30,
ciudad = "Asuncion"
}
amigos[2] = {
nombre = "Juan",
edad = 21,
ciudad = "Encarnacion"
}
amigos[3] = {
nombre = "Roberto",
edad = 45
ciudad = "Concepcion"
}
amigos[4] = {
nombre = "Maria",
edad = 19
ciudad = "Concepcion"
}
AGREGAR(colegas, {ID = 1, nombre = "Carlos", email = "Carlos@blox.com" })
AGREGAR(colegas, {ID = 2, nombre = "Ana", email = "Ana@blox.com" })
AGREGAR(colegas, {ID = 3, nombre = "Lorena", email = "Lorena@blox.com" })
//
// Testado OK
//
// mezclar()
// Une dos tablas en una. Si los nombres son diferentes, se agrega.
// Si son iguales, se copian los campos (union).
//
// Ej.: En el ejemplo el registro "Carlos" y existe en la tabla amigos, pero
// no tiene el campo "email", entonces en vez de adicionar ese registro, solo
// actualiza el registro ya existente. Resultado solo 6 registros, en vez de 7.
// 2 registros copiados y 1 registro modificado.
campo = "nombre"
IMPRIMIR ("\n\nTABLA AMIGOS\n------------")
tablas.imprimir(amigos)
IMPRIMIR ("\n\nTABLA COLEGAS\n-------------")
tablas.imprimir(colegas)
juntos = tablas.mezclar(amigos, colegas, campo)
IMPRIMIR ("\n\n\nTABLAS MEZCLADAS\n-------------")
tablas.imprimir(juntos)
FINAL