Cómo Crear y Utilizar Uniones y Uniones SQL
Al crear objetos de negocio en la capa de lógica de negocios, a menudo es necesario dibujar en dos tablas separadas para mostrar datos de ambas. App Builder, puede configurar un tipo Join para combinar columnas de una o más tablas u objetos comerciales para crear un nuevo objeto comercial. Este artículo lo guiará a través de los cuatro tipos de uniones SQL compatibles con App Builder- Interior, Exterior Izquierdo, Cruz y Exterior Derecho - y dar ejemplos sobre cómo crearlos y usarlos en App Builder además, también veremos otro tipo de relación llamada Unión que está disponible para configuración en Uniones en App Builder.
- Inner - El tipo de unión interna devuelve filas que existen en cada tabla
- Cross - La unión cruzada produce un producto cartesiano
- Left Outer - Una unión externa izquierda devuelve todas las filas de la tabla izquierda especificada, independientemente de una coincidencia en la tabla derecha
- Right Outer - Una unión externa derecha 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
Unión Interna
¿qué Es una Unión Interna?
Las uniones internas son las uniones más utilizadas. Cuando se dan dos tablas, el conjunto de resultados de una unión interna contiene solo las filas entre las dos tablas que son iguales, según las columnas de la unión.
Ejemplo
Digamos que queremos un objeto comercial de clientes que han realizado un pedido y los detalles del pedido realizado. Este sería un gran caso de uso para una unión interna, porque una unión interna puede devolver registros en la intersección de dos tablas. Nuestro conjunto resultante debe incluir todos los CustomerID
que tiene un OrderID
a continuación se muestran las dos tablas Customer
y Order
a la que nos uniremos.
Antes de crear su unión interna, debe crear un objeto comercial. El nuestro se llama Customer (with Order)
. Incorpore las dos tablas al panel Tablas. Implemente la unión interna entre ellas. Customer
y Order
la columna Unirse aquí es CustomerID
que es la única columna entre las dos que es la misma.
El conjunto de resultados debe incluir a los clientes que han realizado pedidos. En este caso, nuestros datos dieron como resultado una fila:
Unión Cruzada
¿qué Es una Unión Cruzada?
Una unión cruzada produce un conjunto de resultados que es la cantidad de filas x en la primera tabla multiplicada por la cantidad de filas y en la segunda tabla. El conjunto de resultados será x * y filas.
Al intentar decidir qué tiene sentido con una unión cruzada, resulta útil decir que el conjunto resultante tendrá columnas de la tabla 1 por cada columna de la tabla 2.
Ejemplo
Tenemos dos mesas, Category
y Supplier
sabemos que cada Supplier
me gustaría que cada uno Category
, por lo que necesitamos crear un objeto comercial que combine estas dos tablas. Nos gustaría obtener un conjunto resultante que tenga una Category
para cada Supplier
este es un ejemplo perfecto de cuándo utilizar una unión cruzada.
A continuación se muestran registros de ejemplo para las tablas Category
y Supplier
:
Para unir de forma cruzada estas dos tablas, necesitamos crear un nuevo objeto comercial. Lo llamamos nuestro Supplier (and Categories)
. Ingresa las dos tablas que queremos unir de forma cruzada en el panel Tablas. En el panel Uniones, indica que quieres realizar una unión cruzada entre las dos tablas.
Nota
No necesitamos indicar las columnas de unión porque, con la unión cruzada, las dos tablas no tienen que tener columnas en común para unirse. Aún podemos obtener una Category
para cada uno Supplier
.
Después de desplegar esta unión, veremos resultados como este. Observe que hay un Category
para cada uno Supplier
:
Unión Externa Izquierda
¿qué Es una Unión Externa Izquierda?
Una unión externa izquierda recupera todas las filas coincidentes de dos tablas (la interna entre las dos) más las filas que no coinciden con ninguna fila de la segunda tabla. Esto es útil cuando desea todos los resultados comunes entre dos tablas, pero también desea los valores nulos en la tabla izquierda.
Ejemplo
Es posible que desee una lista de todos los clientes, ya sea que hayan realizado un pedido o no. En este caso, una unión externa izquierda sería perfecta. Este ejemplo es similar al ejemplo de unión interna anterior, excepto que en este caso también queremos ver resultados donde hay una CustomerID
listado sin una OrderID
.
A continuación se muestran las tablas que utilizamos: Customer
y Order
son las mismas tablas que usamos para el ejemplo de una unión interna.
Esta declaración de objeto comercial es muy similar al objeto comercial del ejemplo de unión interna. La única diferencia es el nombre y la declaración de esta unión como una unión externa izquierda en lugar de una unión interna.
Los resultados nos dan los mismos resultados que nos dio la unión interna, más las filas en el Customer
tabla que no coincide con ninguna fila en la Order
tabla.
Hay 92 resultados esta vez.
Exterior Derecho
¿qué Es una Unión Externa Derecha?
La tercera unión es una unión externa derecha, que es exactamente lo opuesto a una externa izquierda. Normalmente no importa si se utiliza una u otra, ya que siempre se puede cambiar una tabla del lado izquierdo al lado derecho de la unión y se logra el mismo efecto. Los resultados variarán según la unión que elija y el orden de las tablas agregadas al panel Uniones.
Ejemplo
Como ejemplo de cambio de una unión externa izquierda a una unión externa derecha, es posible que desee ver todos sus clientes con o sin pedidos, así como todos los detalles de pedidos con o sin pedidos o productos. La siguiente declaración es una forma de configurar esta lógica.
Cuando ejecutamos los resultados o vemos los resultados de la cuadrícula rápida, vemos que se devuelven los siguientes registros:
Unión
¿qué Es un Sindicato?
En App Builder las uniones de unión producen una combinación de dos sentencias select que apuntan a la misma columna. Una unión de unión combina los resultados de dos columnas diferentes (que tienen el mismo nombre) de dos tablas diferentes en una columna unificada. Si bien la mayoría de las uniones utilizan una columna de unión, la unión de unión no lo hace. Esto se debe a que otras uniones requieren un contexto compartido entre las dos tablas para funcionar, pero una unión de unión solo requiere columnas compartidas.
Ejemplo 1
Por ejemplo, una unión interna entre el Product
y Supplier
las tablas mostrarían cada producto junto con su proveedor, mientras que una unión entre los Product
y Supplier
las tablas le mostrarán una lista de todos los diferentes SupplierID
campos. Esto se debe a que la unión muestra esencialmente todos los resultados de la misma columna en dos tablas diferentes, y estas dos tablas solo comparten los mismos resultados. SupplierID
. Recuerde que con las uniones, compartir contexto y tener la misma columna son dos criterios diferentes.
A continuación se muestran las dos tablas Proveedor y Producto.
Ahora puede crear su objeto comercial que utilizará la unión. La nuestra se llama Supplier (Union with Product)
. Incorpore las tablas que utilizará en el panel Tablas. Declare una unión entre las dos tablas en el panel Uniones. Nuevamente, esta unión no requiere unir columnas. El panel Columnas solo nos permite agregar SupplierID
como columna porque es la única columna que las dos tablas tienen en común.
El conjunto de resultados contiene todos los SupplierID
's, incluidos los registros duplicados si el SupplierID
aparece en ambas tablas.
Ejemplo 2
Otro caso de uso de una unión es si un cliente le pide que busque a todos los encuestados, pero los usuarios pueden responder de varias maneras. Digamos que un usuario puede responder por correo, que se ingresa en una tabla llamada EmailRespondants
, pero también pueden responder mediante una llamada telefónica utilizando el PhoneRespondant
tabla. 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 lo mismo. RespondantID
varias veces, pero poder ver cómo respondieron cada vez.