Resumen: En este tutorial, aprenderá cómo usar la cláusula PostgreSQL LEFT JOIN
para seleccionar datos de varias tablas.
Introducción a la cláusula de unión izquierda de PostgreSQL
supongamos que tiene dos tablas: A
y B
.,
Cada fila de la tabla A
puede tener cero o muchos filas correspondientes de la tabla B
mientras que cada fila de la tabla B
tiene una y sólo una fila correspondiente en la tabla A
.
para seleccionar datos de la tabla A
que pueden o no tener filas correspondientes en la tabla B
, utilice la cláusula LEFT JOIN
.,
la siguiente instrucción ilustra la sintaxis LEFT JOIN
que une la tabla A
con la tabla B
:
Code language: SQL (Structured Query Language) (sql)
para unirse a la tabla A
con la tabla B
usando una combinación izquierda, siga estos pasos:
- primero, especifique las columnas en ambas tablas de las que desea seleccionar datos en la cláusula
SELECT
. - En segundo lugar, especifique la tabla izquierda (tabla
A
) en la cláusulaFROM
., - En tercer lugar, especifique la tabla derecha (tabla
B
) en la cláusulaLEFT JOIN
y la condición de unión después de la palabra claveON
.
la cláusulaLEFT JOIN
comienza a seleccionar datos de la tabla de la izquierda. Para cada fila en la tabla izquierda, compara el valor en la columna pka
con el valor de cada fila en la columna fka
en la tabla derecha.,
si estos valores son iguales, la cláusula LEFT join crea una nueva fila que contiene columnas que aparecen en la cláusula SELECT
y agrega esta fila al conjunto de resultados.
en caso de que estos valores no sean iguales, la cláusula LEFT join también crea una nueva fila que contiene columnas que aparecen en la cláusula SELECT
. Además, llena las columnas que vienen de la tabla derecha con NULL.,
El siguiente diagrama de Venn que ilustra cómo el LEFT JOIN
cláusula de obras:
tenga en cuenta que el LEFT JOIN
también se conoce como LEFT OUTER JOIN
.
PostgreSQL LEFT JOIN examples
veamos las siguientes tablas film
y inventory
de la base de datos de ejemplo.,
Cada fila en el film
tabla puede tener cero o el número de filas en el inventory
tabla. Cada fila en la tabla inventory
tiene una y solo una fila en la tabla film
.
El film_id
columna se establece el enlace entre el film
y inventory
tablas.,
La siguiente expresión se utiliza la etiqueta LEFT JOIN
cláusula join film
tabla con el inventory
tabla:
Cuando una fila de la etiqueta film
tabla no tiene una fila coincidente en la etiqueta inventory
tabla, el valor de la etiqueta inventory_id
columna de esta fila es el NULL
.,
la siguiente instrucción agrega una cláusula WHERE
para encontrar las películas que no están en el inventario:
la siguiente instrucción devuelve el mismo resultado., La diferencia es que utiliza los alias de tabla para hacer la consulta más concisa:
Si ambas tablas tienen el mismo nombre de columna utilizado en el ON
cláusula, puede usar la sintaxis USING
como esta:
esta técnica es útil cuando desea seleccionar filas de una tabla que no tienen filas coincidentes en otra tabla.