Saltar al contenido

Cómo crear y usar uniones y joins SQL en Jitterbit App Builder

Al crear Objetos de Negocio en la Capa de Lógica de Negocio, a menudo es necesario consultar dos tablas separadas para mostrar datos de ambas. Con App Builder, se puede configurar un tipo de Join para combinar columnas de una o más tablas, o Objetos de Negocio, para crear un nuevo Objeto de Negocio. Este artículo te guiará a través de los cuatro tipos de Joins SQL soportados en App Builder - Inner, Left Outer, Cross y Right Outer - y dará ejemplos sobre cómo crearlos y usarlos en App Builder. Además, también echaremos un vistazo a otro tipo de relación llamada Union que está disponible para configuración bajo Joins en App Builder.

  • Inner - El tipo de Inner Join devuelve filas que existen en cada tabla
  • Cross - El Cross Join produce un Producto Cartesiano
  • Left Outer - Un Left Outer Join devuelve todas las filas de la tabla izquierda especificada, independientemente de una coincidencia en la tabla derecha
  • Right Outer - Un Right Outer devuelve todas las filas de la tabla derecha especificada, independientemente de una coincidencia en la tabla izquierda
  • Union - Combina el conjunto de resultados de dos o más declaraciones SELECT

Inner join

¿Qué es un inner join?

Los Inner Joins son el tipo de Join más utilizado. Cuando se tienen dos tablas, el conjunto de resultados de un Inner Join contiene solo las filas entre las dos tablas que son iguales, basándose en las columnas de Join.

Innerdiagram

Ejemplo

Supongamos que queremos un Objeto de Negocio de clientes que han realizado un pedido y los detalles del pedido realizado. Este sería un gran caso de uso para un Inner Join, porque un Inner Join puede devolver registros en la intersección de dos tablas. Nuestro conjunto resultante debería incluir cada CustomerID que tenga un OrderID. A continuación se muestran las dos tablas Customer y Order que vamos a unir.

Customertable

A ordertable

Antes de crear tu Inner Join, necesitas hacer un Objeto de Negocio. El nuestro se llama Customer (with Order). Lleva las dos tablas al panel de Tablas. Implementa el Inner Join entre Customer y Order. La columna de Join aquí es CustomerID, que es la única columna entre las dos que es la misma.

join1.png

Innercolumnstab

Innerjoinstab

El conjunto de resultados debería ser de los Clientes que han realizado Pedidos. En este caso, nuestros datos resultaron en una fila:

Innerresults

Cross join

¿Qué es un cross join?

Un Cross Join produce un conjunto de resultados que es el número de filas x en la primera tabla multiplicado por el número de filas y en la segunda tabla. El conjunto de resultados tendrá x * y filas.

Al intentar decidir qué tiene sentido con un Cross Join, ayuda decir que el conjunto resultante tendrá columnas de la tabla 1 para cada columna en la tabla 2.

Crossdiagram

Ejemplo

Tenemos dos tablas, Category y Supplier. Sabemos que cada Supplier querría cada Category, así que necesitamos hacer un Objeto de Negocio que combine estas dos tablas. Nos gustaría un conjunto resultante que tenga un Category para cada Supplier. Este es un ejemplo perfecto de cuándo usar un Cross Join.

A continuación se muestran registros de ejemplo para las tablas Category y Supplier:

Categoryrecords

A supplierrecords

Para hacer un Cross Join entre estas dos tablas, necesitamos crear un nuevo Objeto de Negocio. El nuestro se llama Supplier (and Categories). Lleva las dos tablas que nos gustaría Cross Join al panel de Tablas. En el panel de Joins, indica que te gustaría un Cross Join entre las dos tablas.

join2.png

A crosscolumns

A crossjoins

Nota

No es necesario indicar las columnas de unión porque, con el Cross Join, las dos tablas no tienen que tener columnas en común para unirse. Aún podemos obtener una Category para cada Supplier.

Después de implementar esta unión, veremos resultados como este. Nota que hay una Category para cada Supplier:

Crossresults

Left outer join

What is a left outer join?

Un Left Outer Join obtiene todas las filas coincidentes de dos tablas (las internas entre las dos) más las filas que no coinciden con ninguna fila en la segunda tabla. Esto es útil cuando se desean todos los resultados comunes entre dos tablas, pero también se quieren los valores nulos en la tabla izquierda.

A leftouterdiagram

Example

Puede que desee una lista de todos los clientes, ya sea que hayan realizado un pedido o no. En este caso, un Left Outer Join sería perfecto. Este ejemplo es similar al ejemplo anterior de Inner Join, excepto que en este caso también queremos ver resultados donde hay un CustomerID listado sin un OrderID.

A continuación se presentan las tablas que estamos utilizando: Customer y Order. Son las mismas tablas que usamos para el ejemplo de un Inner Join.

Customertable

A ordertable

Esta declaración de Objeto de Negocio es muy similar a la del objeto de negocio del ejemplo de Inner Join. La única diferencia es el nombre y declarar esta unión como un Left Outer en lugar de un Inner Join.

join3.png

Innercolumnstab

A lo joins

Los resultados nos dan los mismos resultados que nos dio el Inner Join, más las filas en la tabla Customer que no coinciden con ninguna fila en la tabla Order.

Hay 92 resultados esta vez.

A lo results

Right outer

What is a right outer join?

El tercer join es un Right Outer Join, que es justo lo opuesto a un Left Outer. Usar uno u otro generalmente no importa porque siempre se puede cambiar una tabla del lado izquierdo al derecho del join y se logra el mismo efecto. Los resultados variarán dependiendo de qué join elijas y el orden de las tablas añadidas al panel de Joins.

A ro diagram

Example

Como un ejemplo de querer cambiar de un Left Outer Join a un Right Outer Join, puede que desees ver todos tus Clientes con o sin Pedidos, así como todos los Detalles de Pedido con o sin Pedidos o Productos. La declaración a continuación es una forma en que podrías configurar esta lógica.

join4.png

A ro columns

A ro joins

Cuando ejecutamos resultados, o vemos los resultados de la cuadrícula rápida, vemos los siguientes registros devueltos:

A ro results

Union

What is a union?

En App Builder, los Union Joins producen una combinación de dos declaraciones select que apuntan a la misma Columna. Un Union Join combina los resultados de dos Columnas diferentes (que tienen el mismo nombre) de dos Tablas diferentes en una Columna unificada. Mientras que la mayoría de los Joins utilizan una columna de Join, el Union Join no lo hace. Esto se debe a que otros Joins requieren un contexto compartido entre las dos tablas para funcionar, pero un Union Join solo requiere columnas compartidas.

Ejemplo 1

Por ejemplo, un Inner Join entre las tablas Product y Supplier mostraría cada producto junto con su proveedor, mientras que un Union Join entre las tablas Product y Supplier te mostraría una lista de todos los diferentes campos SupplierID. Esto se debe a que el Union Join esencialmente muestra todos los resultados de la misma columna en dos tablas diferentes, y estas dos tablas solo comparten el SupplierID. Recuerda que con los Joins, compartir contexto y tener la misma columna son dos criterios diferentes.

A continuación se presentan las dos tablas Supplier y Product.

A supplier results

A product results

Ahora puedes crear tu Objeto de Negocio que utilizará el Union Join. Nosotros lo llamamos Supplier (Union con Product). Lleva las tablas que utilizarás al panel de Tablas. Declara un Union entre las dos tablas en el panel de Joins. Nuevamente, este Join no requiere Join Column. El panel de Columns solo nos permite agregar SupplierID como una columna porque es la única columna que las dos tablas tienen en común.

join5.png

A union columns

A union joins

El conjunto de resultados contiene todos los SupplierID, incluidos los registros duplicados si el SupplierID aparece en ambas tablas.

A union results

Ejemplo 2

Otro caso de uso para un Union es si un cliente te pide que encuentres todos los encuestados, pero los usuarios pueden responder de múltiples maneras. Supongamos que un usuario puede responder por correo electrónico, que se ingresa en una tabla llamada EmailRespondants, pero también puede responder a través de una llamada telefónica utilizando la tabla PhoneRespondant. Podrías unir las tablas para encontrar las columnas que tienen en común, que podrían ser RespondantID y RespondType, para recibir una lista de todas las personas que han respondido y cómo respondieron. De esta manera, también puedes ver el mismo RespondantID múltiples veces, pero podrás ver cómo respondieron cada vez.