20th Jul 2022 Lectura de 8 minutos SQL JOINs para principiantes Adrian Dembek JOIN Índice ¿Qué es Tipos de JOIN en SQL? INNER JOIN LEFT JOIN RIGHT JOIN FULL JOIN Ejemplo de la vida real: Tiendas y productos Descartar la información que falta UN INNER JOIN ¿Qué productos deben ordenarse? UNA JUNTA IZQUIERDA ¿Sabemos lo que vendemos? UN RIGHT JOIN Mostrar todo lo disponible UNIÓN COMPLETA ¿Quiere saber más sobre Tipos de JOIN en SQL? Probablemente ya estés familiarizado con las consultas SQL sencillas, como SELECT * FROM table. Ahora te estás preguntando qué hacer cuando tienes varias tablas y quieres unirlas. Exactamente! JOIN es la clave. En este tutorial de Tipos de JOIN en SQL para principiantes, aprenderás a conectar datos de múltiples tablas. ¿Qué es Tipos de JOIN en SQL? Las bases de datos suelen tener más de una tabla. JOINs es una construcción SQL utilizada para unir datos de dos o más tablas. Cuando se desea utilizar columnas de dos tablas en una tabla de resultados, la forma más sencilla de hacerlo es escribir una consulta JOIN. La sintaxis de un SQL JOIN es: SELECT * FROM table1 JOIN table2 ON table1.id1=table2.id2 Como este es un tutorial de SQL JOINs para principiantes, empecemos por lo más básico. Repasaremos los elementos individualmente. Después de la palabra clave FROM, escribes el nombre de la primera tabla de la que quieres tomar columnas. A continuación, utiliza la palabra clave JOIN, seguida del nombre de la segunda tabla que desea utilizar. A continuación, la sentencia ON indica a la consulta en qué columnas deben unirse los datos. (Normalmente se trata de un ID). En la sintaxis anterior, unimos las tablas usando id1 de table1 y id2 de table2. Esto se escribe como table1.id1 y table2.id2 - después del nombre de la tabla hay un punto y luego el nombre de la columna. Conviene aclarar que las columnas en las que unimos los datos no siempre tienen la forma de ID. Tampoco es necesario que tengan el mismo nombre. Por ejemplo, es posible unir dos tablas basadas en claves llamadas orders.post_code y cities.zip_code. Como puede ver, no se trata de un ID y los nombres de las columnas de los códigos postales también son diferentes. Sin embargo, ambas columnas contienen códigos postales; se necesitan dos campos que coincidan para hacer un SQL JOIN. INNER JOIN Continuemos con nuestra guía Tipos de JOIN en SQL para principiantes. Veremos cómo Tipos de JOIN en SQL funcionan en un ejemplo sencillo. Supongamos que queremos averiguar qué artista ha grabado una determinada canción. En este modelo de datos básico, sólo hay dos tablas: song y artist. La tabla song contiene las columnas song_id, song_title y artist_id. La tabla artist está formada por artist_id y artist_name. Como podemos ver, artist_id está en ambas tablas; podemos usarlo para unirlas. El JOIN más sencillo (también llamado INNER JOIN) toma la tabla de la izquierda y hace coincidir la información de cada fila de la tabla de la derecha utilizando artist_id. Así, la primera canción, "Dancing Queen", tiene un artist_id igual a "04"; en la tabla artist, "04 " se asigna a "ABBA". Como se puede ver en la tabla artist, no hay ningún artist_id igual a "06", que se asigna a la canción "Rolling in the Deep". En la tabla de resultados, sólo se muestran las canciones que coinciden con un artist_name. Tampoco hay ninguna canción de Michael Jackson en la tabla de resultados, ya que no existe dicha canción en la tabla song. Recuerda que INNER JOIN selecciona todas las filas de ambas tablas siempre que haya una coincidencia entre las columnas de ambas tablas. Este es el código: SELECT * FROM song JOIN artist ON song.artist_id=artist.artist_id LEFT JOIN El segundo tipo de join que vamos a mencionar en este tutorial de Tipos de JOIN en SQL para principiantes es el LEFT JOIN. Siempre toma la primera tabla (es decir, la tabla justo después de la palabra clave FROM ) como un todo (todos los registros de la primera tabla). Sólo toma los registros coincidentes de la segunda tabla. Si no hay información coincidente, se devuelve el valor NULL. Esto significa que no hay información disponible para ese ID en particular. Vuelva a mirar la tabla artist. No hay ningún artist_name con un artist_id igual a "06". Por eso la canción "Rolling in the deep" no aparece en el resultado de la consulta INNER JOIN. Aunque aparece en el ejemplo de LEFT JOIN, tiene valores de NULL para artist_id y artist_name. Esta es la sentencia SQL LEFT JOIN: SELECT * FROM song LEFT JOIN artist ON song.artist_id=artist.artist_id RIGHT JOIN El siguiente tipo de join en nuestro tutorial de Tipos de JOIN en SQL para principiantes es el RIGHT JOIN. A diferencia de LEFT JOIN, éste toma todos los registros de la segunda tabla (la que está inmediatamente después de la palabra clave JOIN ) y sólo aquellos registros de la primera tabla que tengan valores coincidentes artist_ids. En este caso, no hay canciones de Michael Jackson en la base de datos, por lo que se colocan NULLs para esos song_ids, song_titles y artist_ids. Y ahora "Rolling in the Deep" ha desaparecido, ya que en la tabla de la derecha (artist) no hay ningún artist_id igual a "06". Este es el código: SELECT * FROM song RIGHT JOIN artist ON song.artist_id=artist.artist_id FULL JOIN El último tipo de JOIN del que vamos a hablar en nuestra guía de Tipos de JOIN en SQL para principiantes es el FULL JOIN. Es una combinación de LEFT JOIN y RIGHT JOIN, ya que toma todos los registros de ambas tablas y coloca valores de NULL donde falta la información de la tabla coincidente. En el ejemplo siguiente, puede ver NULLs para artist_id igual a "06" (¡sí, debería ser Adele!) y NULLs para las canciones de Michael Jackson con artist_id igual a "05".(¡Sí, "Billie Jean" existe, pero SQL no lo sabe!) SELECT * FROM song FULL JOIN artist ON song.artist_id=artist.artist_id Ejemplo de la vida real: Tiendas y productos Ahora mostraremos cómo utilizar Tipos de JOIN en SQL en un ejemplo de negocio real. Esta vez, nuestro tutorial de Tipos de JOIN en SQL para principiantes utilizará un ejemplo del sector minorista. Imagina que tienes una tienda y quieres ver qué productos están agotados. También quiere comprobar si su gestor de base de datos mantiene el orden. Supongamos que la base de datos sólo tiene dos tablas: product y stock. Como puede ver, la primera tabla (product) tiene dos columnas: product_id y product_name. Si todo está en orden, debería haber un ID y un nombre para todos los productos que hemos vendido. La segunda tabla (stock) representa el stock actual que tenemos en la tienda - por ejemplo, hay siete artículos para el valor product_id de "100". Fíjese bien en la columna product_id de ambas tablas. Algunos identificadores están presentes en ambas tablas(102, 105, 107); otros sólo en la izquierda(101, 103, 106); y otros sólo en la derecha(100, 104). Esta información se utilizará en los ejemplos siguientes. Descartar la información que falta Cuando queremos ver sólo los productos que están en stock y ya conocemos todos sus nombres, podemos utilizar una sentencia INNER JOIN. Ésta selecciona sólo los registros con un id presente en las dos tablas que queremos unir. Como resultado, obtenemos una lista de tres nombres de productos y sus cantidades. Como puede ver, puede utilizar las sentencias JOIN y INNER JOIN para hacer lo mismo. JOIN es una abreviatura de INNER JOIN. Los otros JOINtienen que ser especificados explícitamente. UN INNER JOIN SELECT product_name, stock.product_id, quantity FROM products INNER JOIN stock ON product.product_id = stock.product_id ¿Qué productos deben ordenarse? Supongamos que queremos comprobar qué productos están agotados y hay que volver a pedirlos. Para ello, utilizaremos un LEFT JOIN para hacer coincidir los registros de la tabla product con la tabla stock. Podemos visualizar esto como si pusiéramos la tabla product a la izquierda y la tabla stock a la derecha. A continuación, buscamos registros en ambas tablas que coincidan por product_id. Los registros que no coincidan con los campos de product_id reciben un NULL. (Véase la tabla de resultados más abajo). UNA JUNTA IZQUIERDA SELECT product_name, stock.product_id, quantity FROM products LEFT JOIN stock ON product.product_id = stock.product_id Así, en la tabla stock no hay valores de product_id iguales a "101", "103" o "106". Por eso la tabla muestra NULLs para el zumo de naranja, el café y los cereales. Estos son los productos que necesitamos pedir. ¿Sabemos lo que vendemos? El papel del gestor de bases de datos es mantener todo en orden en nuestras bases de datos. Digamos que queremos verificar si está haciendo un buen trabajo. Comprobaremos si la tabla product se actualiza con nuevos productos. Para ello, utilizaremos un RIGHT JOIN. RIGHT JOIN toma todos los registros de la tabla stock y los coloca a la derecha (tal y como sugiere RIGHT JOIN ). A continuación, muestra sólo los registros de la tabla product que tengan una coincidencia con product_id. UN RIGHT JOIN SELECT product_name, stock.product_id, quantity FROM products RIGHT JOIN stock ON product.product_id = stock.product_id Mostrar todo lo disponible Para obtener una imagen completa de la situación, podemos querer ver todos los nombres de los productos y todas sus cantidades en ambas tablas. Entonces podremos ver qué productos necesitan ser reordenados y a qué product_idles falta un product_name. ¡Para esto, FULL JOIN es muy útil! Toma todos los registros de la tabla de la izquierda (product) y todos los registros de la tabla de la derecha (stock) y hace coincidir sólo los registros que tienen el mismo id (product_id); inserta un NULL a la derecha si falta un product_name o a la izquierda si no hay artículos en stock. UNIÓN COMPLETA SELECT product_name, stock.product_id, quantity FROM products FULL JOIN stock ON product.product_id = stock.product_id ¿Quiere saber más sobre Tipos de JOIN en SQL? Puedes encontrar más ejemplos de uso de Tipos de JOIN en SQL en nuestro canal de YouTube - We Learn SQL. Compruébalo y recuerda suscribirte. Espero que este rápido Tipos de JOIN en SQL tutorial para principiantes te haya ayudado a entender cómo unir datos de dos tablas. Si quieres más información, te recomiendo que te inscribas en LearnSQL.es, donde podrás aprender a usar SQL (¡y mucho más!) para manejar bases de datos. Los temas se presentan de forma sencilla y muy comprensible. Pruebe hoy mismo los cursos de SQL de LearnSQL.es de forma gratuita. Tags: JOIN