Unir tres o más tablas
Encadene joins y razone sobre los conjuntos de resultados intermedios
Unir tres o más tablas es una lección gratuita de SQL Interview Prep en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de SQL Interview Prep, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de SQL Interview Prep incluye 4 lecciones en total.
Las uniones forman una cadena, no ramas
Los problemas reales de las entrevistas rara vez se detienen en dos tablas. Le pedirán unir tres, cuatro o más. La idea clave que permite ordenar el problema es esta: una unión de varias tablas no es más que una secuencia de uniones de dos tablas.
La base de datos une las dos primeras tablas para crear un resultado intermedio y, después, une ese resultado con la tercera, y así sucesivamente. Si puede razonar sobre una unión, puede razonar sobre una cadena de ellas.
El esquema de tres tablas
Ampliamos nuestro ejemplo con una tercera tabla. Ahora tenemos clientes, sus pedidos y los productos a los que hace referencia cada pedido.
customers(id, name)orders(id, customer_id, product_id, amount)products(id, title)
Dos relaciones las conectan: orders.customer_id = customers.id y orders.product_id = products.id.
customers(id, name)
orders(id, customer_id, product_id, amount)
products(id, title)La consulta básica de tres tablas
Encadene las uniones una tras otra. Cada JOIN ... ON añade una tabla e indica cómo se conecta con lo anterior.
Léala de arriba abajo: empiece por orders, añada el cliente coincidente y, después, el producto coincidente. Cada fila de orders incorpora un nombre y un título de producto.
SELECT c.name, p.title, o.amount
FROM orders o
JOIN customers c ON c.id = o.customer_id
JOIN products p ON p.id = o.product_id;Piense en conjuntos de resultados intermedios
El modelo mental que facilita las uniones entre varias tablas: después de cada JOIN, imagine el resultado intermedio obtenido hasta ese momento.
- Después de la unión 1: columnas de orders + customers.
- Después de la unión 2: ese resultado + columnas de products.
La siguiente cláusula ON puede hacer referencia a cualquier columna ya presente en el conjunto intermedio, por lo que el orden de las uniones afecta a lo que puede escribir en cada ON.
Cada ON puede ver las tablas anteriores
Una consecuencia importante: la cláusula ON de una unión posterior puede hacer referencia a cualquier tabla unida anteriormente, no solo a la tabla que se está añadiendo.
Aquí, la tercera unión se enlaza con o (orders), que ya estaba en el ámbito. También podría enlazar una cuarta tabla con c o p, porque ambas ya forman parte del resultado acumulado.
SELECT c.name, p.title, w.region
FROM orders o
JOIN customers c ON c.id = o.customer_id
JOIN products p ON p.id = o.product_id
JOIN warehouses w ON w.id = o.warehouse_id; -- refers to oComience por la tabla central
Un consejo práctico para las entrevistas en directo: comience el FROM con la tabla de hechos o central (normalmente la que se encuentra en el centro de las relaciones) y, después, extiéndase hacia las tablas de consulta.
orders está en el centro y contiene claves foráneas hacia customers y products, así que comenzar por ahí mantiene sencillas todas las cláusulas ON y permite hacer referencias hacia adelante.
-- orders is central: it links to both sides
FROM orders o
JOIN customers c ON c.id = o.customer_id
JOIN products p ON p.id = o.product_idEl fan-out se acumula a lo largo de las cadenas
Todo lo aprendido sobre el fan-out sigue siendo válido y se acumula. Si cada pedido tiene muchos artículos y cada artículo tiene muchas filas de impuestos, el número de filas se multiplica en cada paso.
Cuando un agregado parece demasiado grande en una consulta con varias uniones, sospeche que una de las uniones intermedias introdujo fan-out y compruebe individualmente la granularidad de cada unión.
-- rows = orders * items_per_order * tax_rows_per_item
SELECT o.id
FROM orders o
JOIN order_items i ON i.order_id = o.id
JOIN item_taxes t ON t.item_id = i.id;Mezclar tipos de JOIN en una cadena
Puede combinar uniones INNER y LEFT en una misma consulta, pero el orden importa. Una vez que un LEFT JOIN introduce NULL, un INNER JOIN posterior que haga referencia a esas columnas NULL puede eliminar las filas conservadas.
Aquí, si un cliente no tiene ningún pedido, el LEFT JOIN lo conserva con product_id igual a NULL, y el INNER JOIN posterior con products vuelve a eliminarlo; es un error fácil de cometer bajo presión.
SELECT c.name, p.title
FROM customers c
LEFT JOIN orders o ON o.customer_id = c.id
JOIN products p ON p.id = o.product_id;
-- the INNER products join can cancel the LEFT JOINMantener las uniones externas como externas
Para conservar hasta el final los clientes sin pedidos, haga que la unión posterior también sea LEFT. Así, los NULL avanzan sin problemas hasta el final.
Regla práctica: una vez que elige una unión externa, manténgala para todas las tablas que dependan de la rama opcional.
SELECT c.name, p.title
FROM customers c
LEFT JOIN orders o ON o.customer_id = c.id
LEFT JOIN products p ON p.id = o.product_id;
-- customers with no orders are now kept (NULL title)Los alias son esenciales a escala
Con cuatro o cinco tablas, varias pueden compartir nombres de columna como id, name o created_at. Los alias cortos y coherentes evitan la ambigüedad y mantienen la consulta legible.
Elija alias que sugieran la tabla (c, o, p) y califique cada columna. Los entrevistadores interpretan sus alias como una señal de cómo escribe SQL para producción.
SELECT c.id AS customer_id,
o.id AS order_id,
p.id AS product_id,
p.title
FROM orders o
JOIN customers c ON c.id = o.customer_id
JOIN products p ON p.id = o.product_id;Tablas puente para relaciones muchos a muchos
Cuando dos entidades tienen una relación de muchos a muchos, una tercera tabla de unión (puente) se sitúa entre ambas y usted realiza la unión a través de ella. Los estudiantes y los cursos se conectan mediante las matrículas.
Reconocer que debe pasar por una tabla puente es, por sí solo, una señal habitual en las entrevistas.
SELECT s.name, c.title
FROM students s
JOIN enrollments e ON e.student_id = s.id
JOIN courses c ON c.id = e.course_id;Comprobación rápida
Razone sobre una cadena de uniones mixtas.
Recapitulación: unir tres o más tablas
Tenga presentes estos puntos en la entrevista:
- Una unión entre varias tablas es una cadena de uniones entre dos tablas; razone sobre el resultado intermedio después de cada paso.
- Una cláusula ON posterior puede hacer referencia a cualquier tabla anterior de la cadena.
- Comience por la tabla central y extiéndase hacia las tablas de consulta.
- El fan-out se acumula a lo largo de las uniones; compruebe la granularidad en cada paso.
- Un INNER JOIN después de un LEFT JOIN puede anularlo; mantenga las uniones externas para conservar las filas opcionales.
- Las relaciones muchos a muchos se unen mediante una tabla puente.
Preguntas frecuentes
¿La lección «Unir tres o más tablas» es gratis?
Sí — el texto completo de «Unir tres o más tablas» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de SQL Interview Prep, actualiza a CoddyKit PRO. El curso de SQL Interview Prep incluye 4 lecciones en total.
¿Qué aprenderé en «Unir tres o más tablas»?
Encadene joins y razone sobre los conjuntos de resultados intermedios Practicas SQL Interview Prep con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar SQL Interview Prep?
No se requiere experiencia previa. SQL Interview Prep en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.
¿Cuánto tiempo toma la lección «Unir tres o más tablas»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de SQL Interview Prep?
Sí. Cada lección de SQL Interview Prep incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Cómo INNER JOIN hace coincidir las filas
- ON frente a WHERE en los joins
- Expansión de joins y multiplicación de filas
- Unir tres o más tablas