Volver a la lista de artículos Artículos
Lectura de 10 minutos

La combinación perfecta: explicación de las combinaciones SQL

No todas las invitaciones conducen a la combinación perfecta, y lo mismo ocurre en SQL. Este artículo explica las uniones SQL (Tipos de JOIN en SQL) utilizando un ejemplo de lista de invitados a una fiesta, lo que le ayudará a comprender cómo los diferentes tipos de uniones deciden qué registros aparecen en el resultado.

Febrero es el mes del amor. Las aplicaciones de citas hablan de emparejamientos, se envían invitaciones para eventos de San Valentín y todo el mundo espera que las cosas salgan bien.

En SQL, nos ocupamos de las coincidencias todo el tiempo, solo que de una manera más práctica. Los datos suelen estar repartidos en varias tablas. Para analizarlos, necesitamos combinar las tablas basándonos en valores coincidentes. Eso es exactamente lo que hacen las combinaciones (Tipos de JOIN en SQL). Conectan filas de diferentes tablas utilizando una columna compartida y deciden qué registros aparecen juntos en el resultado.

Para los principiantes, esto puede parecer abstracto al principio. Términos como INNER JOIN o LEFT JOIN describen reglas precisas, pero sin una imagen clara, es fácil perder la pista de lo que realmente está sucediendo.

Domina el arte de la coincidencia
Si quieres dejar de hacer conjeturas y empezar a escribir consultas como un profesional, el curso Tipos de JOIN en SQL en LearnSQL.es es tu cita perfecta. Con 93 ejercicios prácticos, está diseñado para llevarte de «Es complicado» a «Experto en SQL» utilizando escenarios del mundo real. Es la forma más rápida de convertir los JOIN en algo natural.

En este artículo, utilizaremos una sencilla metáfora del Día de San Valentín para explicar Tipos de JOIN en SQL de una manera clara e intuitiva.

La situación

Imagina que estás organizando una fiesta. Podría ser un evento de San Valentín, una fiesta para solteros o simplemente una reunión informal; los detalles no importan realmente.

Antes de la fiesta, creas una lista de las personas que has invitado. La fiesta tiene lugar y, después, puedes ver lo que realmente ha pasado:

  • algunas de las personas invitadas acudieron
  • algunas personas invitadas no aparecieron
  • y algunas personas asistieron aunque no estaban invitadas

Como resultado, terminas con una segunda lista: las personas que asistieron a la fiesta. Ahora tienes dos listas:

  • las personas que fueron invitadas
  • personas que asistieron

En términos de SQL, esto nos da dos tablas. Una tabla almacena las personas que fuinvitedas a la fiesta, creada antes del evento. La segunda tabla almacena las personas que realmente asistieron, basándose en lo que sucedió en realidad. Algunos registros aparecen en ambas tablas, otros solo aparecen en una. Las Tipos de JOIN en SQL nos ayudan a comparar estas tablas y decidir qué registros queremos ver juntos en el resultado.

invited

id name email
1 Alice alice@email.com
2 Bob bob@email.com
3 Carol carol@email.com
4 Dave dave@email.com

showed_up

id name arrived_at
1 Alice 2026-02-14 19:08:00
3 Carol 2026-02-14 19:22:00
5 Eve 2026-02-14 19:40:00

Alice y Carol fueron invitadas y asistieron.
Bob y Dave fueron invitados, pero no asistieron.
Eve asistió sin invitación.

La comparación de estas dos listas ofrece respuestas diferentes, dependiendo de lo que se quiera saber.

INNER JOIN: Las personas que fueron invitadas y asistieron ❤️

INNER JOIN es la forma más común de combinar tablas. Busca la «coincidencia perfecta» entre las dos listas. En nuestro ejemplo de la fiesta, solo muestra a las personas que:

  1. Estaban en la lista invited.
  2. Y realmente asistieron.

Si alguien fue invitado pero no asistió (como Bob), queda fuera. Si alguien asistió pero no estaba en la lista (como Eve), también queda fuera. Solo las «coincidencias» superpuestas pasan el corte.

Aquí hay un consejo profesional para principiantes: INNER JOIN es el estándar. En las bases de datos SQL, si simplemente escribes JOIN, la base de datos asume que te refieres a INNER JOIN. Es la configuración «predeterminada» para las relaciones de datos porque, en la mayoría de los casos, solo queremos ver los registros en los que ambas partes coinciden.

Ahora podemos escribir un INNER JOIN que devuelva solo los invitados que asistieron:

SELECT
  i.id,
  i.name,
  i.email,
  s.arrived_at
FROM invited AS i
INNER JOIN showed_up AS s
  ON i.id = s.id
ORDER BY s.arrived_at;

Resultado

id name email arrived_at
1 Alice alice@email.com 2026-02-14 19:08:00
3 Carol carol@email.com 2026-02-14 19:22:00

Alice y Carol aparecen porque su id existe en ambas tablas. Bob y Dave quedan excluidos porque no asistieron. Eve queda excluida porque no fue invitada, por lo que no hay ninguna fila coincidente en la lista de invitados.

En el trabajo real, INNER JOIN responde a preguntas como:

  • ¿Qué usuarios invitados iniciaron sesión?
  • ¿Qué clientes realizaron un pedido?
  • ¿Qué correos electrónicos se enviaron y se abrieron?

Si no hay coincidencia en ambos lados, el registro simplemente no aparece en el resultado.

LEFT JOIN: Todos los que fueron invitados 💌

Un LEFT JOIN comienza con la tabla invited. Eso significa que todas las personas invitadas aparecen en el resultado, independientemente de si asistieron o no.

  • Si alguien asistió, se ven sus datos de asistencia.
  • si no asistió, las columnas de la showed_up tabla contienen NULL. NULL Simplemente significa que no se ha encontrado ningún registro coincidente.

Aquí hay un LEFT JOIN que muestra a todos los invitados, junto con la hora de llegada si asistieron:

SELECT
  i.id,
  i.name,
  i.email,
  s.arrived_at
FROM invited AS i
LEFT JOIN showed_up AS s
  ON i.id = s.id
ORDER BY i.id;

Resultado

id name email arrived_at
1 Alice alice@email.com 2026-02-14 19:08:00
2 Bob bob@email.com NULL
3 Carol carol@email.com 2026-02-14 19:22:00
4 Dave dave@email.com NULL

Bob y Dave aparecen en el resultado aunque no asistieron. El NULL simplemente indica que no se encontró ninguna fila coincidente en la showed_up tabla.

En la práctica, LEFT JOIN es útil cuando se quiere preguntar:

  • ¿A quién invitamos, aunque no viniera?
  • ¿Qué usuarios se registraron pero nunca iniciaron sesión?
  • ¿Qué clientes nunca hicieron un pedido?

Por eso LEFT JOIN es uno de los JOIN más utilizados en la elaboración de informes y análisis.

Consejo profesional: la unión «segura»

En el mundo profesional, LEFT JOIN es a menudo la opción «preferida» para la elaboración de informes. ¿Por qué? Porque es segura. Garantiza que no se «elimine» accidentalmente a personas del informe solo porque aún no hayan realizado ninguna acción. Si se desea obtener una lista de todos los clientes y sus pedidos, un LEFT JOIN se asegura de que incluso los clientes que aún no han comprado nada sigan contando.

RIGHT JOIN: todos los que aparecieron 🤷

Una UNIÓN DERECHA funciona de la misma manera que una LEFT JOIN, pero desde el otro lado. Comienza con la showed_up lista en lugar de la invited lista. Eso significa que

  • todas las personas que asistieron a la fiesta aparecen en el resultado
  • si fueron invitadas, se ven los detalles de su invitación
  • si no lo fue, las columnas de la invitación contienen NULL

Esto incluye, naturalmente, a las personas que se presentaron sin invitación.

Aquí hay una RIGHT JOIN que muestra a todas las personas que asistieron, tanto si fueron invitadas como si no:

SELECT
  s.id,
  i.name,
  i.email,
  s.arrived_at
FROM invited AS i
RIGHT JOIN showed_up AS s
  ON i.id = s.id
ORDER BY s.arrived_at;

Resultado

id name email arrived_at
1 Alice alice@email.com 2026-02-14 19:08:00
3 Carol carol@email.com 2026-02-14 19:22:00
5 NULL NULL 2026-02-14 19:40:00

Eve aparece en el resultado aunque no fue invitada. Los NULL Los valores de las columnas de invitación simplemente significan que no había ningún registro coincidente en la invited tabla.

RIGHT JOIN es menos común en la práctica porque normalmente se puede reescribir como un LEFT JOIN cambiando el orden de las tablas. Aun así, comprender cómo funciona te ayuda a leer y razonar sobre el código SQL escrito por otros.

FULL OUTER JOIN: el informe completo de la fiesta 💝

Un FULL OUTER JOIN muestra todo. Combina ambas tablas y conserva todos los registros de ambos lados, independientemente de si existe una coincidencia o no.

Eso significa que ves:

  • las personas que fueron invitadas y asistieron
  • las personas que fueron invitadas pero no acudieron
  • las personas que asistieron sin invitación

No se filtra nada.

Aquí tienes FULL OUTER JOIN que genera el informe completo de la fiesta:

SELECT
  i.id AS invited_id,
  i.name,
  i.email,
  s.arrived_at
FROM invited AS i
FULL OUTER JOIN showed_up AS s
  ON i.id = s.id
ORDER BY i.id, s.id;

Resultado

invited_id name email arrived_at
1 Alice alice@email.com 2026-02-14 19:08:00
2 Bob bob@email.com NULL
3 Carol carol@email.com 2026-02-14 19:22:00
4 Dave dave@email.com NULL
NULL NULL NULL 2026-02-14 19:40:00

Este resultado muestra la historia completa:

  • Alice y Carol fueron invitadas y asistieron
  • Bob y Dave fueron invitados pero no asistieron
  • Eve acudió sin invitación

FULL OUTER JOIN Es útil cuando se desea obtener una visión completa y no se quiere perder ningún registro de ninguna de las dos tablas. Resulta especialmente útil para auditorías, comprobaciones de datos e informes de alto nivel, en los que los datos que faltan son tan importantes como los datos que coinciden.

Los mismos datos, preguntas diferentes

Lo más importante que hay que recordar sobre Tipos de JOIN en SQL es lo siguiente:

Los datos no cambian.
Solo cambia la pregunta.

Cuando se cambia de un INNER JOIN a un LEFT JOIN o un FULL OUTER JOIN, no estás modificando las tablas. Solo estás cambiando las reglas que deciden qué registros aparecen en el conjunto de resultados.

Una vez que dejas de pensar en las JOIN como algo misterioso y empiezas a pensar en ellas como filtros aplicados a dos listas, se vuelven mucho más fáciles de entender.

Este cambio de perspectiva suele ser el momento en el que los JOINs finalmente «cuajan» para los principiantes.

De los invitados a la fiesta a las tablas SQL

El ejemplo de la fiesta es solo una forma de hacer visible la lógica. El mismo patrón aparece en todas partes en el trabajo real con SQL.

Por ejemplo:

  • clientes y pedidos
  • usuarios e inicios de sesión
  • correos electrónicos enviados y correos electrónicos abiertos

En todos los casos, se trabaja con dos listas y se plantean variaciones de las mismas preguntas:

  • ¿Quién aparece en ambas listas?
  • ¿Quién aparece solo en una de ellas?
  • ¿A quién quiero incluir en mi resultado, aunque falte algo?

Tipos de JOIN en SQL existen para responder exactamente a estas preguntas. Una vez que comprenda cómo funcionan con una simple lista de invitados, aplicar la misma lógica a tablas reales resulta sencillo.

Conclusión: elige la JOIN que se adapte a la pregunta

En SQL, al igual que en el amor, no existe una única «mejor» coincidencia. Solo existe la JOIN que se ajusta a la pregunta que estás haciendo.

  • A veces solo quieres coincidencias confirmadas y mutuas (INNER JOIN).
  • A veces necesitas ver quién no ha respondido todavía (LEFT JOIN).
  • A veces quieres tener una imagen completa, desordenada y hermosa de todos los involucrados (FULL OUTER JOIN).

Una vez que dejas de ver los JOIN como código abstracto y empiezas a verlos como la lógica de las relaciones, descubres el verdadero poder de las bases de datos relacionales.

Comprender la teoría es una excelente primera cita, pero el dominio se obtiene con la práctica. Si quieres dejar de cuestionar tu sintaxis y empezar a escribir consultas complejas con confianza, el curso «Tipos de JOIN en SQL» es el siguiente paso perfecto. Pasarás de la lista de invitados a trabajar con conjuntos de datos profesionales, desarrollando la memoria muscular que necesitas para una carrera en el ámbito de los datos.

Y si estás listo para una relación seria y duradera con tu carrera, el paquete SQL «Todo, para siempre» te ofrece acceso de por vida a todos los cursos que ofrecemos, desde consultas básicas hasta análisis de datos avanzados. Es el mejor regalo que puedes hacerte a ti mismo en el futuro.

No dejes que tus datos sigan siendo «complicados». Empieza hoy mismo tu camino hacia la combinación perfecta.