20th Jul 2022 Lectura de 7 minutos ¿Qué es el LEFT JOIN en SQL? Kateryna Koidan SQL aprender SQL sql joins Índice JOIN en SQL Explicación del LEFT JOIN ¿Cómo funciona el LEFT JOIN? SQL LEFT JOINs en uso Ejemplo con empleados Ejemplo con países ¡Es hora de practicar el LEFT JOIN! 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: ¿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! Tags: SQL aprender SQL sql joins