Saltar al contenido principal

Cómo unir 3 tablas en SQL: Métodos y ejemplos

Aprende a unir eficazmente tres tablas en SQL. Descubre métodos y ejemplos prácticos para mejorar tus habilidades de manipulación de datos. Domina las uniones SQL con facilidad.
Actualizado 14 feb 2025  · 7 min de lectura

Aunque las uniones SQL se utilizan habitualmente para combinar datos de dos tablas, no hay por qué detenerse ahí. De hecho, puedes fusionar datos de tres o incluso más tablas para descubrir relaciones y perspectivas aún más complejas a partir de tus datos.

En este artículo, te guiaré a través de ejemplos de unión de tres tablas en SQL; también consideraremos las implementaciones específicas de cada base de datos y las mejores prácticas. También recomienda encarecidamente tomar nuestros cursos Introducción a SQL y Aprende SQL para obtener todos los conocimientos básicos importantes.

Pasos para unir 3 tablas en SQL

Unir tres tablas en SQL te permite realizar consultas complejas para recuperar datos de varias tablas. Al unir tres tablas, utilizamos la cláusula JOIN para combinar los datos de estas tablas. 

Supón que tienes las tres tablas siguientes Customers, Products, y Orders.

Ejemplo de tabla Clientes en SQL.

Ejemplo de tabla Clientes en SQL. Imagen del autor.

Ejemplo de tabla Productos en SQL.

Ejemplo de tabla Productos en SQL. Imagen del autor.

Ejemplo de tabla Pedidos en SQL.

Ejemplo de tabla Pedidos en SQL. Imagen del autor.

En primer lugar, puedes unir las tablas Customers y Orders para mostrar qué clientes hicieron pedidos y sus detalles, como order_id, order_date y el quantity pedido.

-- Select data from Customers
SELECT 
    Customers.customer_id, 
    Customers.first_name, 
    Customers.last_name, 
    Orders.order_id, 
    Orders.order_date, 
    Orders.quantity 
FROM Customers
-- Join Orders table
INNER JOIN Orders 
ON Customers.customer_id = Orders.customer_id;

Ejemplo de tabla SQL JOIN Clientes y Pedidos.

Ejemplo de tabla SQL JOIN Clientes y Pedidos. Imagen del autor.

Por último, puedes combinar las tres tablas, Customers, Orders, y Products, para obtener una vista completa de los clientes, sus pedidos, los productos que compraron y el coste total de cada pedido.

-- Select data starting with Customers
SELECT 
    Customers.customer_id,
    Customers.first_name,
    Customers.last_name,
    Orders.order_id,
    Orders.order_date,
    Products.product_name,
    Orders.quantity,
    Products.price,
    (Orders.quantity * Products.price) AS total_cost -- Total cost calculation
FROM Customers
-- Join the Orders table based on customer_id
INNER JOIN Orders 
ON Customers.customer_id = Orders.customer_id
-- Join the Products table based on product_id
INNER JOIN Products 
ON Orders.product_id = Products.product_id;

Ejemplo de SQL JOIN tres tablas.

Ejemplo de SQL JOIN tres tablas. Imagen del autor.

Veamos los ejemplos prácticos de utilización de INNER JOIN, LEFT JOIN, y RIGHT JOIN para unir tres tablas. Consulta nuestro tutorial Introducción a las un iones SQL para saber más sobre los distintos tipos y ejemplos de uniones.

Ejemplos de Cómo Unir 3 Tablas en SQL

Veamos ahora algunos ejemplos prácticos utilizando INNER JOIN, LEFT JOIN, y RIGHT JOIN para unir tres tablas.

Si te quedas atascado en el significado de alguna de estas uniones y quieres seguir practicando para dominar realmente las técnicas adecuadas, inscríbete en nuestro curso Unir datos en SQL, que no sólo te ayudará con las uniones SQL, sino que también te enseñará la teoría de conjuntos relacionales y las subconsultas.

Utilizar INNER JOIN

Un INNER JOIN recupera los registros con valores coincidentes en las tres tablas, filtrando cualquier registro que no coincida. Utilizar INNER JOIN es ideal cuando sólo necesitas resultados que tengan relaciones directas en todas las tablas implicadas.

Supongamos que tienes tres tablas Customers, Orders, y Products. La siguiente consulta recupera sólo los clientes que han realizado pedidos e incluye los detalles de los productos asociados a cada pedido.

-- Select customer details, order information, and associated product names
SELECT 
    Customers.customer_id, 
    Customers.customer_name, 
    Orders.order_id, 
    Products.product_name 
-- Select from Customers table
FROM Customers
    -- Join Orders table
    INNER JOIN Orders 
        ON Customers.customer_id = Orders.customer_id
    -- Join Products table
    INNER JOIN Products 
        ON Orders.product_id = Products.product_id;

Utilizar LEFT JOIN

La página LEFT JOIN devuelve todos los registros de la primera tabla (izquierda) y cualquier registro coincidente de las otras dos tablas. Si no hay coincidencia, se devuelven los valores NULL de las columnas de la tabla correcta. La LEFT JOIN es útil para recuperar todos los registros de la tabla principal, aunque algunas filas no tengan datos relacionados en las otras tablas.

En el siguiente ejemplo, todos los clientes aparecerán en el resultado, aunque no hayan realizado ningún pedido. Los campos de datos devolverán valores NULL si no hay datos de pedido o producto que coincidan.

-- Select customer details, order information, and product names
SELECT 
    Customers.customer_id, 
    Customers.customer_name,
    Orders.order_id, 
    Products.product_name
FROM Customers
    -- Join Orders table
    LEFT JOIN Orders 
        ON Customers.customer_id = Orders.customer_id
    -- Join Products table
    LEFT JOIN Products 
        ON Orders.product_id = Products.product_id;

Como nota, LEFT JOIN es lo mismo que LEFT OUTER JOIN en SQL. Tenemos un tutorial que proporciona detalles: SQL LEFT JOIN vs. LEFT OUTER JOIN.

Utilizar RIGHT JOIN

Un RIGHT JOIN recupera todos los registros de la tercera tabla (la de más a la derecha) y cualquier registro coincidente de las tablas de la izquierda. Aunque RIGHT JOIN es menos habitual, sigue siendo útil para priorizar los registros en la tabla de la derecha.

Por ejemplo, en un análisis de inventario, puedes querer saber qué productos tienen pedidos o interacciones con clientes. Todos los productos aparecerán en la siguiente consulta, incluidos los datos del pedido o del cliente asociados. Si hay productos que no se han pedido, los campos order_id y customer_name mostrarán NULL.

-- Select customer details, order information, and product names
SELECT 
    Customers.customer_id,
    Customers.customer_name,
    Orders.order_id,
    Products.product_name
 -- Select from Customers table
FROM Customers
 -- Join Orders table
    RIGHT JOIN Orders 
        ON Customers.customer_id = Orders.customer_id
 -- Join Products table
    RIGHT JOIN Products 
        ON Orders.product_id = Products.product_id;

Aunque los ejemplos anteriores muestran el uso de un único tipo de unión (INNER JOIN, LEFT JOIN, o RIGHT JOIN), es totalmente posible -y a menudo necesario- combinar distintos tipos de unión dentro de la misma consulta para gestionar relaciones de datos más complejas. Por ejemplo, puedes utilizar un LEFT JOIN para incluir todos los registros de una tabla mientras utilizas un INNER JOIN para otra relación dentro de la misma consulta.

A este respecto, también debemos decir que SQL procesa las uniones secuencialmente de izquierda a derecha, por lo que la secuencia determina cómo se combinan las tablas y cómo se tratan los valores de NULL. Por eso empecé este artículo mostrando el proceso como un proceso en dos pasos. Construir tu consulta paso a paso y verificar los resultados de forma incremental es el camino a seguir. LEFT JOIN seguido de INNER JOIN suele ser diferente de INNER JOIN seguido de LEFT JOIN.

Por qué tenemos que unir 3 tablas en SQL

Tomémonos un segundo para hablar del diseño de la base de datos. La razón por la que ahora es habitual tener que hacer uniones entre más de dos tablas es porque la normalización de las bases de datos es ahora habitual. Las bases de datos (y en realidad las personas que las diseñan) lo hacen organizando la información en tablas distintas y relacionadas. Esto se hace para eliminar la redundancia (y también por otras razones). Esta descomposición de la base de datos significa que los datos relevantes para distintas entidades -como las tablas Customers, Orders y Products que hemos visto antes- se almacenan por separado.

En otras palabras, como los datos suelen almacenarse en un esquema de base de datos normalizado, recuperar información suele requerir combinar datos de varias tablas. Por eso, debemos saber escribir consultas que hagan muchas uniones porque, sencillamente, así es como probablemente estén estructurados los datos. Nuestro curso de Diseño de Bases de Datos es un buen recurso sobre estas ideas.

Funciones de unión específicas de la base de datos

Aunque las uniones SQL son consistentes en la mayoría de las bases de datos relacionales, existen algunas diferencias en el manejo de las uniones múltiples que implican tres tablas o más. Veamos las implementaciones y consideraciones específicas de la base de datos para evitar escollos y problemas de optimización.

MySQL

MySQL suele funcionar bien con uniones básicas, pero puede tener problemas con consultas complejas que impliquen varias tablas. El comando EXPLAIN de MySQL es útil para comprender el rendimiento de las uniones e identificar formas de optimizar las consultas con indexación o reescritura de consultas. MySQL también admite la palabra clave STRAIGHT_JOIN, que fuerza el orden de unión, mejorando potencialmente el rendimiento de la consulta en los casos en que la optimización de unión por defecto no sea la ideal.

PostgreSQL

El potente optimizador de PostgreSQL hace que sea muy eficaz para las uniones complejas, incluso con grandes conjuntos de datos. Su compatibilidad con las consultas recursivas mediante la cláusula WITH RECURSIVE permite unir datos jerárquicos de varias tablas. Las funciones de ventana de PostgreSQL son avanzadas y pueden complementar las uniones permitiendo el análisis fila a fila dentro de un conjunto de datos unido.

Servidor SQL

SQL Server permite sugerencias de unión específicas (MERGE JOIN, LOOP JOIN, y HASH JOIN) para anular el comportamiento por defecto, mejorando el rendimiento de las uniones multi-tabla. Los operadores CROSS APPLY y OUTER APPLY de SQL Server son potentes herramientas para unir tablas con funciones con valores de tabla, lo que proporciona más flexibilidad en las consultas multi-tabla.

Recomiendo seguir el curso Introducción a SQL Server de DataCamp para comprender las distintas funcionalidades de SQL Server en la consulta de datos. Además, prueba nuestra pista de habilidades Fundamentos de SQL Server para mejorar tus habilidades de unión de tablas y análisis de datos. La carrera de Desarrollador de SQL Server te dotará de los conocimientos necesarios para escribir, solucionar problemas y optimizar tus consultas con SQL Server.

Oracle SQL

Oracle admite todas las uniones estándar y proporciona opciones únicas como NATURAL JOIN, que une automáticamente las tablas basándose en nombres de columnas coincidentes. El soporte de Oracle para consultas jerárquicas con CONNECT BY puede reducir a veces la necesidad de uniones adicionales, al manejar los datos anidados de forma más eficiente.

Buenas prácticas al unir 3 tablas en SQL

Unir tres tablas en SQL puede aumentar la complejidad de la consulta y afectar al rendimiento, especialmente a medida que aumenta el tamaño de los datos. A continuación se indican las mejores prácticas y técnicas de optimización para mejorar el rendimiento de las consultas.

  • Utiliza una indexación adecuada: Las columnas índice utilizadas frecuentemente en condiciones de unión aceleran la recuperación de datos al reducir la cantidad de datos escaneados.

  • Filtrar a tiempo utilizando las condiciones WHERE y JOIN: Coloca condiciones de filtrado directamente en la cláusula JOIN o WHERE para reducir los datos que hay que procesar en las uniones posteriores, mejorando el rendimiento.

  • Considera el orden y el tipo de unión: Al unir varias tablas, une primero las tablas más pequeñas para minimizar el conjunto de datos lo más rápidamente posible.  Evita utilizar las uniones LEFT o RIGHT si tu análisis no requiere registros no emparejados.

  • Minimizar columnas seleccionadas con SELECCIONAR: Evita utilizar SELECT * para incluir columnas innecesarias en los datos. Selecciona explícitamente las columnas necesarias para reducir los datos devueltos por cada tabla, minimizando el uso de memoria y mejorando el rendimiento de la consulta.

  • Utiliza subconsultas o tablas temporales para uniones complejas: Considera la posibilidad de dividir la consulta en partes más pequeñas utilizando subconsultas para las uniones muy complejas. En el caso de uniones que impliquen consultas complejas repetidas, considera la posibilidad de almacenar los resultados intermedios en tablas temporales para ahorrar tiempo de procesamiento, especialmente en el caso de consultas que requieran muchos cálculos.

Conclusión y aprendizaje posterior

Unir tres tablas en SQL te permite combinar datos de varias tablas para realizar un análisis exhaustivo de los datos y gestionar la base de datos. Dominar las técnicas adecuadas hará que tu código sea eficiente, escalable y de alto rendimiento.

Si quieres convertirte en un analista de datos competente, consulta nuestro itinerario profesional de Analista de Datos Asociado en SQL para aprender las habilidades necesarias. El curso Informes en SQL también es adecuado si quieres aprender a crear cuadros de mando profesionales utilizando SQL. Por último, recomiendo obtener la Certificación de Asociado SQL para demostrar tu dominio del uso de SQL para el análisis de datos y hacer que tu currículum destaque.


Allan Ouko's photo
Author
Allan Ouko
LinkedIn
Creo artículos que simplifican la ciencia de los datos y la analítica, haciéndolos fáciles de entender y accesibles.

Preguntas frecuentes

¿Qué tipos de uniones se pueden utilizar para unir tres tablas?

Puedes utilizar INNER JOIN, LEFT JOIN, RIGHT JOIN, y ocasionalmente FULL JOIN para combinar tres tablas.

¿Importa el orden de unión al unir tres tablas?

El orden de unión puede afectar al rendimiento, especialmente con tablas grandes. Empezar con tablas más pequeñas o muy filtradas suele mejorar la eficacia.

¿Cómo puedo optimizar el rendimiento al unir tres tablas en SQL?

Para optimizar el rendimiento, garantiza una indexación adecuada de las columnas utilizadas en las uniones, limita el número de filas devueltas con las cláusulas WHERE y selecciona sólo las columnas necesarias.

¿Puedo unir más de tres tablas?

Puedes unir más de tres tablas en SQL, pero la consulta puede volverse más compleja y requerir optimizaciones de rendimiento.

Temas

Aprende SQL con DataCamp

Certificación disponible

curso

Unir datos en SQL

4 hr
201.4K
Aumenta tus conocimientos de SQL y aprende a unir tablas, aplicar la teoría de conjuntos relacionales y trabajar con subconsultas.
Ver detallesRight Arrow
Comienza el curso
Ver másRight Arrow