28th Nov 2023 Lectura de 9 minutos Explicación de SQL JOINs: 5 Ejemplos claros de INNER JOIN SQL para principiantes Martyna Sławińska JOIN de SQL JOIN JOIN Índice Uniendo Tablas: Introducción a las operaciones JOIN de SQL Ejemplos prácticos de INNER JOIN en SQL Ejemplo 1: Vincular Libros con Autores Ejemplo 2: Asignar productos a categorías Ejemplo 3: Listar médicos y pacientes con el mismo nombre de pila Ejemplo 4: Emparejar personas con apartamentos adecuados Ejemplo 5: Unir tablas de continentes, países y ciudades Su Turno para Practicar Ejemplos de INNER JOIN en SQL ¿Busca una explicación clara de las uniones en SQL? Eche un vistazo a estos cinco ejemplos de INNER JOIN en SQL. En SQL, INNER JOINpuede ser un poco difícil de dominar para los principiantes. Pero una vez que empieces a trabajar con ellos, aprenderás que son muy útiles. Vamos a discutir cinco ejemplos de SQL INNER JOINs. Pero primero, hagamos un rápido repaso de por qué los JOINs son importantes. En las bases de datos relacionales, los datos se organizan y almacenan dentro de tablas. Cada tabla representa un tipo específico de información. Pero, a menudo, es necesario analizar datos de diferentes tablas simultáneamente. Y aquí es donde entran en juego los JOINs. Le animamos a que practique la unión de tablas siguiendo nuestro curso interactivo Tipos de JOIN en SQL interactivo. Incluye 93 ejercicios que cubren los siguientes temas Tipos de JOIN de SQL. Uniones múltiples. Autouniones, es decir, unir una tabla consigo misma. Uniones no equitativas. Entonces, ¿está listo para ver algunos ejemplos de INNER JOIN? Empecemos. Uniendo Tablas: Introducción a las operaciones JOIN de SQL Tipos de JOIN en SQL combinan datos de dos o más tablas basándose en valores de columnas coincidentes. Por ejemplo, puede unir la información de los clientes con los pedidos que realizaron o vincular cada producto con sus proveedores. Tipos de JOIN en SQL le permiten unir datos de diferentes tablas y extraer información significativa para su caso de uso específico. Consulte esta hoja informativa sobre JOIN en SQL para obtener una visión general de los distintos tipos de JOIN. Un INNER JOIN en SQL combina filas de varias tablas haciendo coincidir sus valores de columna comunes. Cuando aplique un INNER JOIN para vincular datos de clientes con sus pedidos correspondientes, verá una lista de clientes que han realizado al menos un pedido. Además de INNER JOIN, SQL también proporciona otros tipos de uniones: LEFT JOIN RIGHT JOIN y FULL JOIN. Estas uniones se denominan OUTER JOINs. A diferencia de INNER JOIN, una operación OUTER JOIN puede listar filas de ambas tablas, incluso si no hay ninguna coincidencia. Veamos un ejemplo para comprender mejor la naturaleza de SQL INNER JOINs. Esta es la tabla customers que almacena la información de los clientes: customer_idfirst_namelast_nameemail 1CoryCastillocc@email.com 2ElliePottsep@email.com 3JackGreerjg@email.com Y aquí está la tabla orders tabla que almacena todos los pedidos realizados por los clientes: order_idcustomer_idorder_dateorder_amount 2716/6/2023100.00 2827/7/2023150.00 2918/8/202320.00 La columna común (mostrada en rosa) en la que se basan los customers y orders es la columna customer_id. Ahora, aquí está la consulta: SELECT c.customer_id, c.email, o.order_date, o.order_amount FROM customers AS c INNER JOIN orders AS o ON c.customer_id = o.customer_id; Esta consulta une la tabla customers (alias AS c) y la tabla orders (con el alias AS o). Estos alias de tablas proporcionan una forma clara de informar a la base de datos de la tabla de origen de cada columna (utilizando la sintaxis table_alias.column_name). Estos alias se emplean dentro de la cláusula ON para establecer la columna para unir tablas. También los utilizamos en la sentencia SELECT, donde se seleccionan dos columnas de la tabla clientes (c.customer_id and c.email) y otras dos columnas de la tabla orders (o.order_date and o.order_amount). He aquí el resultado de la consulta: customer_idemailorder_dateorder_amount 1cc@email.com6/6/2023100.00 2ep@email.com7/7/2023150.00 1cc@email.com8/8/202320.00 Puede observar que el cliente con el ID 3 no aparece en la tabla resultante. Este cliente en particular aún no ha realizado ningún pedido; por lo tanto, no tiene ningún registro coincidente en la tabla orders tabla. La palabra clave INNER JOIN es intercambiable con la palabra clave JOIN. En otras palabras, cuando se utiliza JOIN, la base de datos la interpreta como una notación abreviada de INNER JOIN. Para obtener más información sobre INNER JOINs, consulte nuestro artículo ¿Qué es un Inner Join en SQL? Ejemplos prácticos de INNER JOIN en SQL Exploremos algunos ejemplos de SQL INNER JOIN adaptados para principiantes. Antes de pasar a los ejemplos, echa un vistazo a este artículo sobre cómo practicar Tipos de JOIN en SQL. Ejemplo 1: Vincular Libros con Autores Tienes dos tablas que almacenan información sobre libros y autores. Une estas tablas para ver la lista de libros junto con sus autores. Esta es la tabla books tabla: book_idtitlepublication_yearauthor_id 1Frankenstein181822 2The Time Machine189523 3The Martian201124 42001: A Space Odyssey196825 5Dune196526 La columna book_id identifica unívocamente cada libro. Y la columna author_id asigna un autor a cada libro. Y aquí está la authors tabla: author_idauthor_name 22Mary Shelley 23H. G. Wells 24Andy Weir 25Arthur C. Clarke 26Frank Herbert La columna author_id identifica unívocamente a cada autor. Y la columna author_name almacena los nombres completos de los autores. Si quieres ver los títulos de los libros y los nombres de sus autores, puedes unir estas tablas basándote en su columna común (la columna author_id en ambas tablas). Sólo tiene que seleccionar title de books y author_name de authors: SELECT b.title, a.author_name FROM books AS b INNER JOIN authors AS a ON b.author_id = a.author_id; Esta es la tabla resultante: titleauthor_name FrankensteinMary Shelley The Time MachineH. G. Wells The MartianAndy Weir 2001: A Space OdysseyArthur C. Clarke DuneFrank Herbert Observe que a cada libro se le asigna un autor y a cada autor se le asigna un libro, ya que no hay valores duplicados en la columna común author_id. Examine el siguiente ejemplo para ver qué ocurre si la columna común tiene valores duplicados. Ejemplo 2: Asignar productos a categorías Tiene dos tablas que almacenan productos y categorías de productos. Una estas tablas para ver la lista de productos junto con sus categorías. Esta es la tabla products tabla: product_idproduct_namecategory_id 1Apple22 2Orange22 3Potato23 4Carrot23 5Chocolate24 La columna product_id identifica unívocamente cada producto. Y la columna category_id asigna una categoría a cada producto. Y aquí está la categories tabla: category_idcategory_name 22Fruits 23Vegetables 24Snacks La columna category_id identifica unívocamente cada categoría. Y la columna category_name almacena los nombres completos de las categorías. Si quieres ver los productos y sus categorías, puedes unir estas tablas basándote en su columna común, que es la columna category_id. Esta es la consulta: SELECT p.product_name, c.category_name FROM products AS p INNER JOIN categories AS c ON p.category_id = c.category_id; Esta es la tabla resultante: product_namecategory_name AppleFruits OrangeFruits PotatoVegetables CarrotVegetables ChocolateSnacks Las categorías con ID 22 y 23 están asignadas a dos productos cada una; sus nombres aparecen dos veces en la tabla de salida. Ejemplo 3: Listar médicos y pacientes con el mismo nombre de pila Tiene dos tablas que almacenan información sobre médicos y pacientes. Una estas tablas para ver la lista de médicos y pacientes que comparten el mismo nombre de pila. Esta es la tabla doctors tabla: doctor_idfirst_namelast_name 1SamanthaMonroe 2MelvinFerrell 3AlbieBlake 4RoseBernard 5LouiPeterson La columna doctor_id identifica de forma exclusiva a cada médico. Las otras dos columnas almacenan los nombres y apellidos de los médicos. Y aquí está la tabla patients tabla: patient_idfirst_namelast_name 23BenWoodward 24SamanthaThomson 25KateDonovan 26AlbieVasquez 27LouiChen La columna patient_id identifica unívocamente a cada paciente. Las otras dos columnas almacenan los nombres y apellidos de los pacientes. Si desea ver la lista de médicos y pacientes que comparten el mismo nombre, puede unir estas tablas basándose en la columna first_name. SELECT d.*, p.* FROM doctors AS d INNER JOIN patients AS p ON d.first_name = p.first_name; Tenga en cuenta que d.* define todas las columnas de la tabla doctors y p.* define todas las columnas de la tabla patients de la tabla. Ésta es la tabla resultante: doctor_idfirst_namelast_namepatient_idfirst_namelast_name 1SamanthaMonroe24SamanthaThomson 3AlbieBlake26AlbieVasquez 5LouiPeterson27LouiChen Gracias a la operación INNER JOIN, puede listar sólo los pares de médicos y pacientes en los que los nombres de pila son iguales. Ejemplo 4: Emparejar personas con apartamentos adecuados Tiene dos tablas que almacenan información sobre apartamentos disponibles para alquilar y personas que buscan apartamentos que se ajustan a su rango de precios. Una estas tablas para ver qué apartamentos puede alquilar cada persona. Esta es la tabla apartments tabla: apartment_idrent 11000 2700 3500 La columna apartment_id identifica unívocamente cada apartamento. Y la columna rent almacena el importe mensual del alquiler. Y aquí está la persons tabla: person_idemailmax_rent 23ab@email.com900 24cd@email.com600 25ef@email.com3000 La columna person_id identifica unívocamente a cada persona que busca un apartamento para alquilar. La columna email almacena sus correos electrónicos y la columna max_rent almacena la cantidad máxima de alquiler mensual que pueden pagar por el apartamento. Si desea ver qué pisos puede alquilar cada persona, puede unir estas tablas basándose en las columnas rent y max_rent: SELECT p.person_id, p.email, a.apartment_id, a.rent AS apartment_rent FROM apartments AS a INNER JOIN persons AS p ON a.rent < p.max_rent; Aquí la correspondencia debe hacerse entre la columna de alquiler de la tabla apartments y la columna max_rent de la tabla persons donde rent < max_rent. Esta es la tabla resultante: person_idemailapartment_idapartment_rent 25ef@email.com11000 23ab@email.com2700 25ef@email.com2700 23ab@email.com3500 24cd@email.com3500 25ef@email.com3500 Utilizando la cláusula ON con la condición que contiene el signo <, múltiples filas de la tabla apartments se asignaron a varias filas de la tabla persons y viceversa. Y se consiguió ver qué apartamentos son adecuados para alquilar para qué personas. Ejemplo 5: Unir tablas de continentes, países y ciudades Esta vez tiene tres tablas que almacenan información sobre continentes, países y ciudades. Une estas tablas para saber qué ciudad pertenece a qué país y qué país pertenece a qué continente. Esta es la tabla continents que almacena todos los continentes: continent_idcontinent_name 1Asia 2Africa 3North America 4South America 5Antarctica 6Europe 7Australia La columna continent_id identifica unívocamente cada continente. Y la columna continent_name almacena su nombre completo. Esta es la tabla countries tabla que almacena los países seleccionados: country_idcountry_namecontinent_id 23United States3 24Brazil4 25South Africa2 26Japan1 27Poland6 La columna country_id identifica unívocamente a cada país. La columna country_name almacena su nombre completo. Y la columna continent_id almacena el continente donde se encuentra el país. Y esta es la tabla cities tabla que almacena las ciudades seleccionadas: city_idcity_namecountry_id 33Rio de Janeiro24 34New York23 35Tokyo26 36Warsaw27 37Cape Town25 La columna city_id identifica cada ciudad de forma única. La columna city_name almacena su nombre completo. Y la columna country_id almacena el país donde se encuentra la ciudad. Si quieres ver qué ciudades, países y continentes van juntos, puedes unir estas tres tablas basándote en sus columnas comunes: SELECT cont.continent_name, coun.country_name, ci.city_name FROM continents AS cont INNER JOIN countries AS coun ON cont.continent_id = coun.continent_id INNER JOIN cities AS ci ON coun.country_id = ci.country_id; La tabla continent se une a la tabla countries por su columna común (continent_id). Y la tabla countries se une a la tabla cities en su columna común (country_id). Esta es la tabla resultante: continent_namecountry_namecity_name AsiaJapanTokyo AfricaSouth AfricaCape Town North AmericaUnited StatesNew York South AmericaBrazilRio de Janeiro EuropePolandWarsaw Las tres tablas se unen en sus columnas comunes y la sentencia SELECT lista los nombres de continente, país y ciudad basándose en la unión entre las columnas ID. Consulta este artículo sobre la unión de tres o más tablas en SQL para ver más ejemplos de uniones multi-tabla. Su Turno para Practicar Ejemplos de INNER JOIN en SQL A lo largo de este artículo, hemos profundizado en las complejidades de INNER JOIN en SQL, desde los conceptos básicos hasta escenarios más avanzados. Hemos utilizado varias condiciones de JOIN e incluso hemos unido tres tablas. Como hemos visto, la potencia de INNER JOIN reside en su capacidad para conectar conjuntos de datos sin problemas, lo que nos permite extraer información valiosa. ¿Necesita más ejemplos de SQL INNER JOIN? Pruebe todo tipo de JOINs siguiendo nuestro curso en Tipos de JOIN en SQL que mencionamos anteriormente. Obtendrá toda la práctica que necesita para sentirse cómodo escribiendo JOINs. ¡Buena Suerte! Tags: JOIN de SQL JOIN JOIN