Documentaciónleft_join(tabla1, tabla2, campo_clave)

left_join(tabla1,tabla2,campoclave)\texttt{left\_join}(tabla_{1}, tabla_{2}, campo_{clave})

Nombre

left_join - Conserva todos los registros de la tabla izquierda y los enriquece con la tabla derecha cuando hay coincidencia.

Sinopsis

salida = tablas.left_join(tabla1, tabla2, campo_clave)

Descripcion

Usa tabla1 como lado izquierdo de la operacion y copia sus registros a la salida.

Luego recorre tabla2 para copiar campos adicionales solo en aquellos registros cuya clave coincide con un registro ya existente en tabla1.

Es util para:

  • enriquecer una tabla principal con informacion opcional
  • conservar todos los registros de la izquierda aunque no tengan match
  • reproducir una operacion similar a LEFT JOIN de SQL: devolver todos los registros de la tabla izquierda y, cuando exista coincidencia por clave, enriquecerlos con los campos de la tabla derecha

Comportamiento

  • La salida siempre contiene todos los registros de tabla1.
  • Si una clave de tabla2 coincide, copia sus campos distintos de campo_clave sobre el registro correspondiente.
  • Si una clave de tabla2 no existe en tabla1, no agrega ese registro a la salida.
  • No modifica la tabla izquierda original.

Funciones API relacionadas

  • tablas.unir()
  • tablas.mezclar()
  • tablas.intersectar()

Parámetros

ParámetroTipoDescripción
tabla1TABLATabla izquierda: sus registros siempre se conservan.
tabla2TABLATabla derecha: aporta campos adicionales si encuentra coincidencia por clave.
campo_claveSTRINGCampo usado para emparejar registros.

Valor de retorno

TABLA - Nueva tabla basada en tabla1, enriquecida con campos de tabla2 cuando la clave coincide.

Ejemplo

ejemplo.blox
INCLUIR "tablas.api"


FUNCION PRINCIPAL
INICIO

    TABLA clientes, deudas, out

    clientes[1] = { id = 1, nombre = "Ana" }
    clientes[2] = { id = 2, nombre = "Beto" }
    clientes[3] = { id = 3, nombre = "Carla" }

    deudas[1] = { id = 2, saldo = 1500, estado = "pendiente" }
    deudas[2] = { id = 3, saldo = 0, estado = "al dia" }
    deudas[3] = { id = 4, saldo = 900, estado = "pendiente" }

    IMPRIMIR("\nCLIENTES")
    tablas.imprimir(clientes)

    IMPRIMIR("\nDEUDAS")
    tablas.imprimir(deudas)

    out = tablas.left_join(clientes, deudas, "id")

    IMPRIMIR("\nLEFT JOIN")
    tablas.imprimir(out)

FINAL