Saltar al contenido

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. Con Vinyl, puede configurar un tipo Unión 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 admitidas en Vinyl: Interior, Exterior Izquierdo, Cruz y Exterior Derecho - y le brindará ejemplos sobre cómo crearlas y usarlas en Vinyl. Además, también veremos otro tipo de relación llamada Unión que está disponible para configuración en Uniones en Vinyl.

  • Interior: el tipo de unión interna devuelve filas que existen en cada tabla.
  • Cross - La unión cruzada produce un producto cartesiano
  • Exterior izquierdo: una combinación externa izquierda devuelve todas las filas de la tabla izquierda especificada, independientemente de una coincidencia en la tabla derecha
  • Exterior derecho: un exterior derecho devuelve todas las filas de la tabla derecha especificada, independientemente de una coincidencia en la tabla izquierda
  • Unión - Combina el conjunto de resultados de dos o más declaraciones SELECT

Unir Internamente

¿qué Es una Unión Interna?

Las uniones internas son las uniones más utilizadas. Cuando se proporcionan dos tablas, el conjunto de resultados de una combinación interna contiene solo las filas entre las dos tablas que son iguales, según las columnas de combinación.

Diagrama interno

Ejemplo

Digamos que queremos un objeto de negocio de los clientes que han realizado un pedido y los detalles del pedido realizado. Este sería un excelente caso de uso para una combinación interna, porque una combinación interna puede devolver registros en la intersección de dos tablas. Nuestro conjunto resultante debe incluir cada CustomerID eso tiene un OrderID. A continuación se muestran las dos tablas. Customer y Order al que nos uniremos.

Tabla de clientes

Una tabla de pedidos

Antes de crear su unión interna, debe crear un objeto comercial. el nuestro se llama Customer (with Order). Introduzca las dos tablas en el panel Tablas. Desplegar la unión interna entre Customer y Order. La columna Unirse aquí es CustomerID que es la única columna entre las dos que es igual.

unirse1.png

Pestaña de columnas internas

Innerjoinstab

El conjunto de resultados debe ser de los Clientes que han realizado pedidos. En este caso, nuestros datos resultaron en una fila:

Resultados internos

Unión Cruzada

¿qué Es una Unión Cruzada?

Una Unión cruzada 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 será x * y filas.

Al intentar decidir qué tiene sentido con una unión cruzada, es útil decir que el conjunto resultante tendrá columnas de la tabla 1 para cada columna de la tabla 2.

diagrama cruzado

Ejemplo

Tenemos dos mesas, Category y Supplier. Sabemos que cada Supplier quisiera cada Category, por lo que necesitamos crear 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 utilizar una unión cruzada.

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

Registros de categoría

Registros de un proveedor

Para unir estas dos tablas, necesitamos crear un nuevo objeto de negocio. llamamos al nuestro Supplier (and Categories). Introduzca las dos tablas que nos gustaría unir de forma cruzada en el panel Tablas. En el panel Uniones, indique que desea una unión cruzada entre las dos tablas.

unirse2.png

A Cruz de columnas

Uniones cruzadas

Nota

No necesitamos indicar columnas de Unir porque, con el Cross Join, las dos tablas no tienen que tener columnas en común para Unir. Todavía podemos conseguir un Category para cada Supplier.

Después de desplegar este Join, veremos resultados como este. Observe que hay un Category para cada Supplier:

Resultados cruzados

Izquierda Combinación Externa

¿qué Es una Unión Externa Izquierda?

Una combinació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 que todos los resultados sean comunes entre dos tablas pero también desea los valores nulos en la tabla de la izquierda.

Un diagrama exterior izquierdo

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 exterior izquierda sería perfecta. Este ejemplo es similar al ejemplo anterior de Unión interna excepto que en este caso también queremos ver resultados donde hay una CustomerID listado sin un OrderID.

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

Tabla de clientes

Una tabla de pedidos

Esta declaración de objeto de negocio es muy similar al objeto de negocio del ejemplo de unión interna. La única diferencia es el nombre y la declaración de esta unión como unión externa izquierda en lugar de unión interna.

unirse3.png

Pestaña de columnas internas

A Lo se une

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

Esta vez hay 92 resultados.

Resultados bajos

Exterior Derecho

¿qué Es una Unión Externa Derecha?

La tercera unión es una unión exterior derecha, que es justo lo opuesto a una unión exterior izquierda. Normalmente no importa usar uno u otro porque siempre puedes cambiar una tabla del lado izquierdo al derecho de la combinación y se logra el mismo efecto. Los resultados variarán según la combinación que elija y el orden de las tablas agregadas al panel Combinaciones.

Un diagrama de Ro

Ejemplo

Como ejemplo de querer cambiar 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 los pedidos con o sin pedidos o productos. La siguiente declaración es una forma de configurar esta lógica.

unirse4.png

Columnas A Ro

A Ro se une

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

Resultados de A Ro

Unión

¿qué Es una Unión?

En Vinyl, Union Joins produce una combinación de dos declaraciones seleccionadas que apuntan a la misma columna. Una combinació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. 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 Union Join esencialmente muestra todos los resultados de la misma columna en dos tablas diferentes, y estas dos tablas solo comparten el 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.

Resultados de un proveedor

A Resultados del producto

Ahora puede crear su objeto comercial que utilizará Union Join. llamamos al nuestro Supplier (Union with Product). Introduzca 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 columna de unión. El panel de Columnas sólo nos permite agregar SupplierID como columna porque es la única columna que las dos tablas tienen en común.

unirse5.png

Columnas de unión

Se une un sindicato

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

Resultados de una unión

Ejemplo 2

Otro caso de uso para una Unión es si un cliente le pide que encuentre 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 a través de una llamada telefónica usando el PhoneRespondant mesa. 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 podrás ver lo mismo. RespondantID varias veces pero poder ver cómo respondieron cada vez.