14th Jul 2022 Lectura de 7 minutos Cómo unir dos tablas en SQL Dorota Wdzięczna SQL aprender SQL JOIN Índice Cómo hacer consultas de una tabla Cómo usar WHERE para hacer consultas de datos de varias tablas Cómo hacer consultas de datos de varias tablas con JOIN Cómo usar JOIN y WHERE para seleccionar datos de tablas Cómo unir tablas en SQL Cuando se trabaja con bases de datos relacionales, es normal hacer consultas de datos de varias tablas. No es difícil si se sabe utilizar los operadores SQL específicos para ello. En este artículo, enseñaré cómo usar WHERE y el operador especial JOIN para unir dos tablas, y cómo filtrar filas del conjunto de resultados. Si quiere hacer prácticas de unir tablas en SQL, eche un vistazo a nuestro curso interactivo Tipos de JOIN en SQL. Contiene más de 90 ejercicios prácticos sobre diferentes tipos de JOIN. También, en nuestro programa de enseñanza Ejercicio de SQL encontrará más cursos prácticos de SQL. Cómo hacer consultas de una tabla Primero, voy a dar un rápido repaso a cómo seleccionar datos de una tabla. Tenemos la siguiente tabla, product: idnameprice 1Smartwatch Erin234.00 2Smartwatch Sun455.00 3Smartband Eli300.00 4Smartband White124.00 Para seleccionar los datos de todas las columnas y filas de esta tabla, se puede utilizar la siguiente consulta: SELECT id, name, price FROM product; En esta sencilla consulta, los nombres de las columnas de las que se desea obtener datos se escriben después de SELECT. A continuación, está la palabra clave FROM y el nombre de la tabla donde se almacenan los datos. También se pueden filtrar las filas para obtener solo los registros que coincidan con los criterios indicados. Observe la siguiente expresión de SQL: SELECT name, price FROM product WHERE price < 250.00; En este caso, el conjunto de resultados consta de solo dos filas y de las columnas name y price: nameprice Smartwatch Erin234.00 Smartband White124.00 Los nombres de las columnas se escriben después de SELECT, y la palabra clave FROM ayuda a especificar la tabla de la que se obtienen los datos. Al final de la consulta, la palabra clave WHERE va seguida de la condición del filtro. En este ejemplo, la condición compara el valor de la columna price con 250,00. La consulta solo devuelve los datos de un producto si su precio es inferior a 250,00. Cómo usar WHERE para hacer consultas de datos de varias tablas Las bases de datos relacionales están formadas por múltiples tablas que hacen referencia unas a otras. Las filas de una tabla hacen referencia a filas específicas de otra tabla, y están conectadas a través de alguna columna de ID. A continuación, veremos cómo unir los datos de una tabla con los de otra. Partimos de las siguientes dos tablas product y category, que pertenecen a una base de datos sobre productos de un almacén: product idproduct_namepricecategory_id 1smartwatch235.002 2bricks26.703 3lamp128.002 4sofa3200.001 5desk1350.001 6power strip29.002 category idcategory_name 1furniture 2electronics 3toys Supongamos que necesitamos algunos datos de esta base de datos de un almacén, como el nombre de los productos, su precio y sus respectivas categorías. Podemos unir las filas de la tabla product con filas de la tabla category a través de una cláusula WHERE. Observe la siguiente consulta: SELECT product.product_name, product.price, category.category_name FROM product, category WHERE product.category_id = category.id ; Este es el conjunto de resultados de la consulta: product_namepricecategory_name smartwatch235.00electronics bricks26.70toys lamp128.00electronics sofa3200.00furniture desk1350.00furniture power strip29.00electronics La expresión SELECT de esta consulta especifica las columnas de ambas tablas: product_name y price, de la tabla product, y category_name, de la tabla category. El nombre de cada columna va precedido del nombre de la tabla correspondiente, y ambos están separados por un punto. A continuación, después de la palabra clave FROM, se escriben los nombres de las tablas separados por comas. La última parte de esta consulta es un WHERE, con una condición que especifica cómo unir las filas de ambas tablas. Aquí, los valores de la columna category_id de la tabla product corresponden a los valores de la columna id de la tabla category y, cuando son iguales, las filas se unen. El ID de categoría (category_id) del "smartwatch" de la tabla product es 2. El mismo valor en la columna id de la tabla category corresponde a "electronics", como se muestra en la fila verde de antes. Si hay columnas con el mismo nombre en ambas tablas, hay que distinguirlas en la sentencia SELECT. Esto se hace escribiendo el nombre de la tabla, seguido de un punto y, luego, el nombre de la columna. Pero, en nuestro ejemplo, las tablas no tienen ningún nombre de columna en común. Por lo que, en la expresión SELECT podemos utilizar solo los nombres de las columnas, sin especificar de qué tablas provienen, como en la consulta que se muestra a continuación: SELECT product_name, price, category_name FROM product, category WHERE product.category_id = category.id ; WHERE se usa para hacer consultas de datos de varias tablas. Es un estándar antiguo de SQL que, aunque todavía está disponible, ya no se utiliza con frecuencia. En la siguiente sección, veremos otro método. Cómo hacer consultas de datos de varias tablas con JOIN Hoy en día, el método más habitual para unir datos de múltiples tablas es usando el operador especial JOIN, también conocido como INNER JOIN. Para ver cómo funciona, utilizaremos las mismas dos tablas de la base de datos del almacén, que vuelvo a mostrar a continuación. product idnamepricecategory_id 1smart watch235.002 2bricks26.703 3lamp128.002 4sofa3200.001 5desk1350.001 6power strip29.002 category idname 1furniture 2electronics 3toys Veamos la siguiente consulta, que asigna la categoría de la tabla category a los nombres de los productos de la tabla product. SELECT product.name AS product_name, category.name AS category_name FROM product JOIN category ON product.category_id=category.id; La unión se realiza con el operador JOIN. En la cláusula FROM, el nombre de la primera tabla (product) va seguido de la palabra clave JOIN y, luego, del nombre de la segunda tabla (category). A continuación, se añade la palabra clave ON y la condición para unir las filas de las distintas tablas. El nombre de la categoría se asigna en función de la columna id de la tabla category, que equivale a la columna category_id de la tabla product (product.category_id=category.id). Este es el conjunto de resultados de la consulta anterior: product_namecategory_name smart watchelectronics brickstoys lampelectronics sofafurniture deskfurniture power stripelectronics El valor de category_id del "smart watch" es 2. En la columna id de la tabla category, el valor 2 está asociado a "electronics", por lo que "smart watch" se asigna a "electronics". Usar el operador JOIN es el método más habitual para unir varias tablas de una base de datos. En el artículo "Una guía ilustrada del INNER JOIN de SQL", hablo más sobre este operador. El artículo "Explicación sencilla del INNER JOIN de SQL" también entra en más detalle en este tema. Como se mencionó anteriormente, el operador INNER JOIN es equivalente a JOIN, y ambos se pueden usar indistintamente. Cómo usar JOIN y WHERE para seleccionar datos de tablas El uso de los operadores JOIN para recuperar datos de varias tablas también permite filtrar más fácilmente el conjunto de resultados. Observe la siguiente consulta, que es una variante de la anterior y se basa en los mismos datos: SELECT product.name AS product_name, category.name AS category_name FROM product JOIN category ON product.category_id=category.id WHERE category.name != ’toys’; Este es el resultado de la consulta: product_namecategory_name smart watchelectronics lampelectronics sofafurniture deskfurniture power stripelectronics La primera parte de esta consulta es igual que en la anterior. Sin embargo, en esta se excluyen los productos de la categoría "toys". Filtramos las filas del conjunto de resultados con una cláusula WHERE, que comprueba si la categoría es distinta de "toys" (category.name != ’toys’). Si quiere realizar más ejercicios prácticos de JOIN en SQL, le invito a que consulte nuestro curso práctico Tipos de JOIN en SQL, lea el artículo "Cómo practicar con los tipos de JOIN de SQL" o vea el video "Conceptos básicos de los JOIN de SQL" de la serie "Aprendemos SQL". También existen otros operadores JOIN. Además de JOIN o INNER JOIN, existen los operadores LEFT JOIN, RIGHT JOIN y FULL JOIN. En "Tipos de JOIN en SQL para principiantes" puede leer más sobre ellos. Si quiere ver más ejercicios de SQL, consulte nuestro programa de enseñanza Ejercicio de SQL. Cómo unir tablas en SQL Hemos visto cómo podemos unir varias tablas de una base de datos relacional que están referenciadas entre sí, para obtener todos los datos de objetos. Esto se puede hacer, usando WHERE o JOIN. Para saber más sobre las diferencias entre estos métodos, recomiendo un artículo muy interesante, "¿Cuál es la diferencia entre unir varias tablas con FROM y con JOIN?". Aquí solo mostré un poco de este tema, así que, ¡siga aprendiendo! Tags: SQL aprender SQL JOIN