Volver a la lista de artículos Artículos
Lectura de 7 minutos

¿Qué es el LEFT JOIN en SQL?

Conozca los detalles de LEFT JOIN, uno de los tipos de JOIN más comunes en SQL.

SQL consiste principalmente en obtener datos de las bases de datos. Muy a menudo, necesitará que los datos se combinen desde múltiples tablas en su base de datos. Es entonces cuando los JOINs entran en juego.

El LEFT JOIN es uno de los tipos de JOIN que probablemente usará muy a menudo. En este artículo, explicaré la sintaxis del LEFT JOIN y cómo funciona usando varios ejemplos e ilustraciones.

JOIN en SQL

En SQL, usted utiliza JOIN para combinar datos de dos tablas basados en una columna con valores coincidentes. Por ejemplo, si tiene una tabla con información de clientes (ID de cliente, nombre, apellido, etc.) y otra tabla con los datos de los pedidos para un periodo específico (ID de pedido, fecha, ID de cliente, ID de producto, etc.) puede unir estas dos tablas basándose en las columnas que almacenan los números de ID de los clientes. Esto le dará los detalles del pedido y del cliente para cada cliente.

Sin embargo, es importante saber que hay diferentes tipos de JOIN en SQL. Tendrá que elegir el correcto en función de las filas que desee mantener en el conjunto de resultados. Si está interesado en los clientes que sólo han realizado pedidos durante un periodo de tiempo específico, utilizará un JOIN simple (también llamado INNER JOIN). Este tipo de SQL JOIN mantiene sólo las filas que están presentes en ambas tablas; en nuestro caso, verá una fila en el conjunto de resultados sólo si el ID del cliente está en la tabla customers y en la tabla orders tabla.

Hay casos en los que se quiere mantener filas de la primera tabla que no tienen los registros correspondientes en la segunda tabla. Es posible que queramos ver información sobre todos los clientes de nuestro conjunto de resultados, aunque no hayan tenido pedidos en un periodo de tiempo concreto. En este caso, utilizará un LEFT JOIN, que combina los datos de dos tablas para que todas las filas de la tabla de la izquierda (la primera) se incluyan en el resultado.

Este es el tipo de JOIN en el que nos centraremos en este artículo. Si no está seguro de qué tipo de JOIN necesita en un caso particular, consulte nuestro video tutorial sobre LEFT JOINs, RIGHT JOINs y FULL JOINs de SQL.

Explicación del LEFT JOIN

LEFT JOIN, también llamada LEFT OUTER JOIN, devuelve todos los registros de la tabla izquierda (primera) y los registros coincidentes de la tabla derecha (segunda). Si no hay coincidencia para un registro específico, obtendrá NULLs en las columnas correspondientes de la tabla derecha. Veamos cómo funciona con el ejemplo de clientes y pedidos mencionado anteriormente.

Aquí están nuestras tablas customers y orders tablas.

customers
idfirst_namelast_name
1SteveBrown
2HelenStewart
3JaneSmith
4JackBond

orders
iddatecustomer_idproduct_idamount
12020-12-20323213.99
22020-12-20312412.45
32020-12-2111889.95
42020-12-224854.60

Para unir estas dos tablas manteniendo todos los registros de la tabla customers tabla, puede utilizar la siguiente consulta SQL:

SELECT *
FROM customers
LEFT JOIN orders
ON customers.id = orders.customer_id
ORDER BY customers.id;

Repasemos la sintaxis de LEFT JOIN:

  • SELECT - Comience por enumerar las columnas (de ambas tablas) que desea ver en el conjunto de resultados (aquí seleccionamos todas las columnas utilizando *);
  • FROM - Pon el nombre de la tabla izquierda, aquella en la que quieres guardar todos los registros (por ejemplo customers);
  • LEFT JOIN - Escribe el nombre de la segunda tabla (derecha) (es decir orders);
  • ON - Utiliza esta palabra clave para indicar las columnas que se utilizarán para unir las tablas, es decir, las que tienen los valores coincidentes. (Aquí, es id de customers y customer_id de orders).

En esta consulta, también utilizamos ORDER BY para ordenar la salida por el ID del cliente, pero esto es opcional.

Después de ejecutar esta consulta, obtendrá la siguiente tabla.

customersorders
idfirst_namelast_nameiddatecustomer_idproduct_idamount
1SteveBrown12020-12-2111889.95
2HelenStewart[NULL][NULL][NULL][NULL][NULL]
3JaneSmith32020-12-20323213.99
3JaneSmith32020-12-20312412.45
4JackBond42020-12-224854.60

Observe la animación:

Gif mostrando cómo funciona el LEFT JOIN

¿Cómo funciona el LEFT JOIN?

En primer lugar, la base de datos examina cada fila de la tabla izquierda y busca una coincidencia en la tabla derecha basándose en las columnas relacionadas. Si hay una coincidencia, añade los datos de la tabla derecha a la fila correspondiente de la tabla izquierda. Si hay varias coincidencias (como en nuestro caso con el cliente nº 3), duplica la fila de la tabla izquierda para incluir todos los registros de la tabla derecha. Si no hay ninguna coincidencia, mantiene la fila de la tabla izquierda y pone NULL en las columnas correspondientes de la tabla derecha (cliente nº 2 en nuestro ejemplo).

Es sencillo, ¿verdad? Puede practicar las LEFT JOINs en este curso interactivo de Tipos de JOIN en SQL . Y ahora veamos algunos ejemplos más de cómo trabajar con LEFT JOINs.

SQL LEFT JOINs en uso

Ejemplo con empleados

Tenemos una tabla con employees y queremos unirla con la tabla que recoge todas las primas pagadas en enero (jan_bonuses).

employees
idfirst_namelast_name
1JoeBiden
2BernieSanders
3PeterButtigieg
4ElizabethWarren
5MichaelBloomberg

jan_bonuses
idemployee_idamount
10113460.00
10222340.00
10341800.00

Queremos unir estas tablas para ver quiénes recibieron bonificaciones en enero. Nuestro resultado debe incluir a todos los empleados, sin importar si recibieron una bonificación o no. Por lo tanto, vamos a utilizar un LEFT JOIN:

SELECT *
FROM employees
LEFT JOIN jan_bonuses
ON employees.id = jan_bonuses.employee_id;
employeesjan_bonuses
idfirst_namelast_nameidemployee_idamount
1JoeBiden10113460.00
2BernieSanders10222340.00
3PeterButtigieg[NULL][NULL][NULL]
4ElizabethWarren10341800.00
5MichaelBloomberg[NULL][NULL][NULL]

Como es de esperar, el resultado incluye a todos los empleados. Si un empleado no se encuentra en la tabla con información sobre las bonificaciones, las columnas correspondientes de la segunda tabla se rellenan con valores de NULL.

¿Está interesado en saber cómo funcionan otros OUTER JOINs? Lea esta guía ilustrada sobre el OUTER JOIN de SQL para saber en qué se diferencian el RIGHT OUTER JOIN y el FULL OUTER JOIN del LEFT OUTER JOIN.

Ejemplo con países

En nuestro último ejemplo, uniremos dos tablas usando LEFT JOIN pero incluiremos sólo las columnas seleccionadas en el resultado final.

Tenemos una lista de países con cierta información básica y queremos complementarla con los datos del PIB de 2019, cuando estén disponibles.

countries
idnamepopulationcurrencyarea
201United States330,770,244USD9,525,067
202China1,405,631,120CNY9,596,961
203Japan125,770,000JPY377,975
204Germany83,122,889EUR357,114
205India1,370,521,240INR3,287,263

gdp_2019
rankcountry_idgdp_nominal_MUSD
120121,427,700
220214,342,903
32035,081,770

En nuestro resultado, no necesitamos toda la información de cada país, sólo el ID del país, el nombre, la población y el PIB nominal de 2019. Esta es la consulta que utilizaremos:

SELECT id, name, population, gdp_nominal_MUSD
FROM countries
LEFT JOIN gdp_2019
ON countries.id = gdp_2019.country_id;
countriesgdp_2019
idnamepopulationgdp_nominal_MUSD
201United States330,770,24421,427,700
202China1,405,631,12014,342,903
203Japan125,770,0005,081,770
204Germany83,122,889[NULL]
205India1,370,521,240[NULL]

La tabla incluye tres columnas de la tabla countries y una columna de la tabla gdp_2019 tabla. Como es de esperar, LEFT JOIN mantiene todos los registros de la primera tabla e introduce los valores de NULL para los registros no coincidentes.

Observe que en esta sentencia SELECT, simplemente hemos enumerado los nombres de las columnas que queremos ver en el resultado. Esto sólo funciona cuando no tenemos columnas con el mismo nombre en ambas tablas. El enfoque más seguro es especificar la tabla para cada columna que solicitamos, es decir, countries.id, countries.name, countries.population, gdp_2019.gdp_nominal_MUSD.

Si necesita hacer LEFT JOIN a más de dos tablas, lea mi guía sobre cómo hacer LEFT JOIN a múltiples tablas en SQL.

¡Es hora de practicar el LEFT JOIN!

Ha aprendido la sintaxis de LEFT JOIN y sabe cuándo y cómo usar este tipo de JOIN en SQL. Está listo para el siguiente paso - escribir sus propias consultas SQL con LEFT JOINs.

Le recomiendo que empiece con nuestro Tipos de JOIN en SQL que incluye 93 ejercicios interactivos que cubren INNER JOIN, OUTER JOINs, non-equi JOINs, y más. Después de terminar este curso, sabrá cómo elegir el tipo correcto de JOIN, cómo unir múltiples tablas, cómo unir una tabla consigo misma y cómo unir tablas utilizando operadores condicionales distintos de la igualdad.

¿Se siente inseguro al practicar Tipos de JOIN en SQL en línea? Revisa este artículo que presenta los mejores enfoques para practicar diferentes tipos de Tipos de JOIN en SQL.

Gracias por leer, y ¡feliz aprendizaje!