Uniones PostgreSQL

Resumen: en este tutorial, aprenderá sobre varios tipos de uniones PostgreSQL incluyendo inner join, left join, right join y full outer join.

La unión PostgreSQL se utiliza para combinar columnas de una (auto-unión) o más tablas basadas en los valores de las columnas comunes entre las tablas relacionadas. Las columnas comunes son típicamente las columnas de clave primaria de la primera tabla y las columnas de clave foránea de la segunda tabla.

PostgreSQL soporta inner join, left join, right join, full outer join, cross join, natural join, y un tipo especial de join llamado self-join.

Configuración de tablas de ejemplo

Suponga que tiene dos tablas llamadas basket_a y basket_b que almacenan frutas:

Las tablas tienen algunas frutas comunes como apple y orange.

La siguiente sentencia devuelve los datos de la tabla basket_a:

Y la siguiente sentencia devuelve datos de la tabla basket_b:

PostgreSQL inner join

La siguiente sentencia une la primera tabla (basket_a) con la segunda tabla (basket_b) haciendo coincidir los valores de las columnas fruit_a y fruit_b:

El inner join examina cada fila de la primera tabla (basket_a). Compara el valor de la columna fruit_a con el valor de la columna fruit_b de cada fila de la segunda tabla (basket_b). Si estos valores son iguales, el inner join crea una nueva fila que contiene columnas de ambas tablas y añade esta nueva fila el conjunto de resultados.

El siguiente diagrama de Venn ilustra el inner join:

PostgreSQL left join

La siguiente sentencia utiliza la cláusula left join para unir la tabla basket_a con la tabla basket_b. En el contexto del left join, la primera tabla se llama tabla izquierda y la segunda tabla se llama tabla derecha.

El left join comienza a seleccionar los datos de la tabla izquierda. Compara los valores de la columna fruta_a con los valores de la columna fruta_b de la tabla cesta_b.

Si estos valores son iguales, el left join crea una nueva fila que contiene columnas de ambas tablas y añade esta nueva fila al conjunto de resultados. (ver la fila #1 y #2 en el conjunto de resultados).

En caso de que los valores no sean iguales, el left join también crea una nueva fila que contiene columnas de ambas tablas y la añade al conjunto de resultados. Sin embargo, rellena las columnas de la tabla derecha (basket_b) con null. (ver la fila #3 y #4 en el conjunto de resultados).

El siguiente diagrama de Venn ilustra la unión izquierda:

Para seleccionar filas de la tabla izquierda que no tienen filas coincidentes en la tabla derecha, se utiliza el left join con una cláusula WHERE. Por ejemplo:

La salida es:

Nota que el LEFT JOIN es el mismo que el LEFT OUTER JOIN por lo que puedes usarlos indistintamente.

El siguiente diagrama de Venn ilustra el left join que devuelve filas de la tabla izquierda que no tienen filas coincidentes de la tabla derecha:

PostgreSQL right join

El right join es una versión invertida del left join. El right join comienza a seleccionar los datos de la tabla derecha. Compara cada valor de la columna fruta_b de cada fila de la tabla derecha con cada valor de la columna fruta_a de cada fila de la tabla fruta_a.

Si estos valores son iguales, el right join crea una nueva fila que contiene columnas de ambas tablas.

En caso de que estos valores no sean iguales, el right join también crea una nueva fila que contiene columnas de ambas tablas. Sin embargo, rellena las columnas de la tabla izquierda con NULL.

La siguiente sentencia utiliza el right join para unir la tabla basket_a con la tabla basket_b:

Aquí está la salida:

El siguiente diagrama de Venn ilustra la unión correcta:

De forma similar, se pueden obtener filas de la tabla derecha que no tengan filas coincidentes de la tabla izquierda añadiendo una cláusula WHERE como sigue:

El RIGHT JOIN y el RIGHT OUTER JOIN son lo mismo por lo tanto puedes usarlos indistintamente.

El siguiente diagrama de Venn ilustra la unión derecha que devuelve filas de la tabla derecha que no tienen filas coincidentes en la tabla izquierda:

PostgreSQL full outer join

El full outer join o full join devuelve un conjunto de resultados que contiene todas las filas de las tablas izquierda y derecha, con las filas coincidentes de ambos lados si están disponibles. En caso de no haber coincidencia, las columnas de la tabla se rellenarán con NULL.

Salida:

El siguiente diagrama de Venn ilustra el full outer join:

Para devolver filas en una tabla que no tienen filas coincidentes en la otra, se utiliza el full join con una cláusula WHERE así:

Aquí está el resultado:

El siguiente diagrama de Venn ilustra el full outer join que devuelve filas de una tabla que no tienen las filas correspondientes en la otra tabla:

La siguiente imagen muestra todos los joins de PostgreSQL que hemos comentado hasta ahora con la sintaxis detallada:

En este tutorial, has aprendido a utilizar varios tipos de joins PostgreSQL para combinar datos de múltiples tablas relacionadas.

  • ¿Ha sido útil este tutorial?
  • SíNo

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *