Documentaciónmezclar(tabla1, tabla2, campo_clave)

mezclar(tabla1,tabla2,campoclave)\texttt{mezclar}(tabla_{1}, tabla_{2}, 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 tabla2 no existe en la salida, agrega el registro completo.
  • Si la clave ya existe, copia en el registro existente los campos de tabla2 distintos de campo_clave.
  • La salida puede contener registros fusionados y registros nuevos agregados.

Funciones API relacionadas

  • tablas.unir()
  • tablas.left_join()
  • tablas.intersectar()

Parámetros

ParámetroTipoDescripción
tabla1TABLAPrimera tabla.
tabla2TABLASegunda tabla.
campo_claveSTRINGCampo 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