0Pricing
SQL Interview Prep · Lección

Cómo INNER JOIN hace coincidir las filas

Use el modelo mental de emparejamiento de filas que facilita cualquier pregunta sobre joins

Cómo INNER JOIN hace coincidir las filas es una lección gratuita de SQL Interview Prep en CoddyKit. Esta es la lección 1 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.

La primera unión que suelen preguntar en una entrevista

Cuando un entrevistador dice «una estas dos tablas», casi siempre se refiere a INNER JOIN. Es la unión predeterminada y la que demuestra si realmente comprende cómo se emparejan las filas.

Todo el tema se reduce a una frase: un INNER JOIN considera todos los pares posibles de filas de las dos tablas y conserva únicamente los pares que cumplen la condición ON. Si no hay coincidencia, la fila simplemente desaparece del resultado.

Fije este modelo mental y cualquier pregunta más difícil sobre uniones resultará más sencilla.

Dos tablas para analizar

Durante esta lección utilizaremos dos tablas pequeñas. customers contiene quién realizó los pedidos, y orders registra cada pedido junto con el cliente al que pertenece.

  • customers(id, name)
  • orders(id, customer_id, amount)

El vínculo entre ellas es orders.customer_id = customers.id. Esta igualdad es el predicado de unión del que depende todo el resultado.

customers
id | name
1  | Ada
2  | Bob
3  | Cleo   -- no orders yet

orders
id | customer_id | amount
10 | 1           | 50
11 | 1           | 20
12 | 2           | 99

La consulta INNER JOIN básica

Esta es la consulta canónica que un entrevistador espera ver. Observe sus tres partes: las dos tablas, JOIN ... ON, que empareja las filas, y las columnas que proyecta.

La palabra clave INNER es opcional en todas las bases de datos principales. Escribir simplemente JOIN significa INNER JOIN, pero escribirlo explícitamente indica la intención y evita ambigüedades en una revisión de código.

SELECT c.name, o.amount
FROM customers AS c
INNER JOIN orders AS o
  ON o.customer_id = c.id;

Cómo es el resultado

Ejecute la consulta con nuestros datos de ejemplo y obtendrá tres filas. Ada tiene dos pedidos, por lo que aparece dos veces. Bob aparece una vez.

Cleo ha desaparecido. No tiene ningún pedido coincidente, así que INNER JOIN la elimina por completo. En una entrevista sobre uniones, lo más importante es explicar explícitamente que las filas sin coincidencia desaparecen.

name | amount
Ada  | 50
Ada  | 20
Bob  | 99

El modelo mental del emparejamiento de filas

Imagine que la base de datos forma primero el producto cartesiano: cada cliente se empareja con cada pedido. Con 3 clientes y 3 pedidos hay 9 pares candidatos.

Después aplica el predicado ON y conserva únicamente los pares para los que es verdadero. De los 9 candidatos, solo 3 cumplen o.customer_id = c.id.

No debe pensar así para razonar sobre el rendimiento, pero este es el modelo exacto que responde a cualquier pregunta sobre «¿cuántas filas devuelve la consulta?».

Recorrido de los pares candidatos

Sigamos el proceso. El comentario después de cada par indica si el predicado es verdadero.

Solo las tres filas TRUE sobreviven en el resultado. Todos los pares que incluyen a Cleo (id 3) fallan, por lo que no aporta ninguna fila.

-- customer.id vs order.customer_id
(Ada=1, ord10 cust=1)  -> TRUE  keep
(Ada=1, ord11 cust=1)  -> TRUE  keep
(Ada=1, ord12 cust=2)  -> FALSE
(Bob=2, ord10 cust=1)  -> FALSE
(Bob=2, ord12 cust=2)  -> TRUE  keep
(Cleo=3, anything)     -> FALSE (no order matches 3)

INNER JOIN no depende del orden

Una pregunta habitual es: ¿importa qué tabla coloca primero? Para un INNER JOIN, no. Estas dos consultas devuelven filas idénticas porque la condición ON es simétrica.

El optimizador puede leer primero cualquiera de las dos tablas, independientemente de cómo las escriba. (Esto NO es cierto para las uniones LEFT/RIGHT, que veremos más adelante.)

-- These return the same rows
SELECT c.name, o.amount
FROM customers c JOIN orders o ON o.customer_id = c.id;

SELECT c.name, o.amount
FROM orders o JOIN customers c ON c.id = o.customer_id;

Los alias de tabla son lo esperado

Los entrevistadores esperan alias breves y claros. Compare la versión detallada con los nombres completamente cualificados con la versión limpia que usa alias.

Los alias también se vuelven obligatorios cuando existe un nombre de columna en ambas tablas. Seleccionar un id sin calificar aquí provocaría un error de columna ambigua, por lo que debe escribir c.id u o.id.

-- verbose
SELECT customers.name, orders.amount
FROM customers JOIN orders
  ON orders.customer_id = customers.id;

-- aliased, preferred
SELECT c.name, o.amount
FROM customers c JOIN orders o
  ON o.customer_id = c.id;

Unir por más de una columna

El predicado ON no está limitado a una sola igualdad. Cuando una relación está definida por una clave compuesta, debe combinar las condiciones con AND.

Aquí, un precio se aplica a cada producto en cada región, por lo que ambas columnas deben coincidir. Los entrevistadores usan este caso para comprobar que no se ha limitado a memorizar las uniones por una sola columna.

SELECT s.units, p.unit_price
FROM sales s
INNER JOIN price_list p
  ON p.product_id = s.product_id
 AND p.region     = s.region;

También existen las uniones no equitativas

La condición ON puede ser cualquier expresión booleana, no solo =. Una unión no equitativa utiliza rangos o desigualdades. Un ejemplo clásico consiste en asignar una puntuación a un intervalo de calificación.

Cada puntuación coincide con el único intervalo que la contiene. Mencionar que las uniones no se restringen a la igualdad es una forma rápida de demostrar experiencia.

SELECT s.student, g.grade
FROM scores s
INNER JOIN grades g
  ON s.points >= g.min_points
 AND s.points <= g.max_points;

JOIN explícito frente a unión con comas

Todavía encontrará la antigua sintaxis de unión con comas en código heredado y en algunas preguntas de entrevista. Estas dos consultas son equivalentes para un INNER JOIN.

Prefiera la forma explícita JOIN ... ON. La sintaxis con comas se puede convertir fácilmente en un producto cartesiano accidental por un error tipográfico, como olvidar el WHERE; precisamente ese es el error que los entrevistadores esperan detectar.

-- old implicit join
SELECT c.name, o.amount
FROM customers c, orders o
WHERE o.customer_id = c.id;

-- modern explicit join (preferred)
SELECT c.name, o.amount
FROM customers c
JOIN orders o ON o.customer_id = c.id;

Comprobación rápida

Compruebe la idea fundamental de las coincidencias de INNER JOIN.

Resumen: cómo funciona la coincidencia de INNER JOIN

Estas son las ideas clave que debe repetir en una entrevista:

  • INNER JOIN conserva solo los pares coincidentes; las filas sin coincidencia en cualquiera de los dos lados desaparecen.
  • Modelo mental: forme todos los pares posibles y, después, conserve aquellos cuyo predicado ON sea verdadero.
  • Es independiente del orden y la palabra clave INNER es opcional.
  • ON puede utilizar claves compuestas, rangos y desigualdades, no solo un único =.
  • Utilice JOIN ... ON explícitos con alias claros para evitar errores de columnas ambiguas y productos cartesianos accidentales.

Preguntas frecuentes

¿La lección «Cómo INNER JOIN hace coincidir las filas» es gratis?

Sí — el texto completo de «Cómo INNER JOIN hace coincidir las filas» 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 «Cómo INNER JOIN hace coincidir las filas»?

Use el modelo mental de emparejamiento de filas que facilita cualquier pregunta sobre joins 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 1 de 4.

¿Cuánto tiempo toma la lección «Cómo INNER JOIN hace coincidir las filas»?

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

  1. Cómo INNER JOIN hace coincidir las filas
  2. ON frente a WHERE en los joins
  3. Expansión de joins y multiplicación de filas
  4. Unir tres o más tablas
← Volver a SQL Interview Prep