meskeIA

Simulador de SQL JOIN Visual

Configura dos tablas, elige el tipo de JOIN y observa cómo se combinan las filas con diagrama de Venn animado, líneas de coincidencia y consulta SQL generada.

© 2026 meskeIA© 2026

1. Tipo de JOIN

Solo devuelve filas con coincidencia en ambas tablas. Las filas sin pareja se descartan.

2. Ejemplos preconfigurados

AB
INNER JOIN
SELECT * FROM empleados INNER JOIN departamentos ON empleados.id_dept = departamentos.id;

Tabla resultado (2 filas)

empleados.id_deptempleados.nombredepartamentos.iddepartamentos.departamento
10Ana López10Ventas
20Bruno Pérez20IT
Filas en empleados4
Filas en departamentos3
Coincidencias2
Filas en resultado2
Cardinalidad50,0%

Guía de SQL JOIN

Operaciones de unión de tablas

Comparativa de los 5 JOIN

TipoQué incluyeNULLsCuándo usarEjemplo casual
INNER JOINSolo filas con coincidencia en ambas tablasNuncaCuando solo importan los registros emparejadosPersonas que tienen pasaporte Y visado vigente
LEFT OUTERTodo A + coincidencias de BEn columnas de B sin parejaListar todo A, marcando si tiene relación con BTodos los empleados, con su departamento si lo tienen
RIGHT OUTERTodo B + coincidencias de AEn columnas de A sin parejaLo mismo que LEFT pero invertido (poco usado)Todos los departamentos, con sus empleados si los tienen
FULL OUTERTodo A + Todo B + coincidenciasEn ambos lados según falteAuditoría: detectar registros huérfanos en ambos ladosComparar inventario físico vs sistema, ver discrepancias
CROSS JOINProducto cartesiano (A × B)Nunca (no hay condición)Generar combinaciones (calendarios, matrices, tests)Cada talla con cada color de una camiseta

Casos de Uso Reales

Facturación

facturas LEFT JOIN clientes: ver todas las facturas, incluso las huérfanas con cliente borrado (aparecerán con cliente NULL).

LEFT JOIN es ideal para detectar registros huérfanos sin perder ninguna fila.

Inventario

productos INNER JOIN stock: solo productos con stock registrado. Ignora artículos descatalogados o sin alta en almacén.

INNER JOIN garantiza que no aparezcan productos sin información completa.

Gestión de equipos

empleados FULL OUTER JOIN departamentos: ver empleados sin departamento y departamentos sin empleados de un solo vistazo.

FULL OUTER es la herramienta de auditoría por excelencia.

Generación de calendarios

fechas CROSS JOIN salas: combinar todos los días del mes con todas las salas para crear una matriz de disponibilidad.

CROSS JOIN es perfecto para crear todas las combinaciones posibles.

Preguntas Frecuentes

¿Cuál es la diferencia entre INNER y OUTER JOIN?

INNER JOIN solo devuelve filas que coinciden en ambas tablas. OUTER JOIN (LEFT, RIGHT, FULL) además devuelve filas sin pareja, rellenando con NULL las columnas del lado contrario.

Regla rápida: si necesitas ver registros huérfanos, usa OUTER. Si solo te interesan emparejamientos limpios, usa INNER.

¿Por qué CROSS JOIN puede ser peligroso?

Devuelve filas_A × filas_B. Si A tiene 1.000 filas y B tiene 1.000, el resultado son 1.000.000 de filas. En tablas grandes puede colgar el servidor o agotar memoria.

Usa CROSS JOIN solo con tablas pequeñas y conscientemente, nunca por accidente al olvidar la cláusula ON.

¿Cuándo uso LEFT y cuándo RIGHT?

Funcionalmente son simétricos: A LEFT JOIN B es equivalente a B RIGHT JOIN A. La convención es escribir siempre LEFT para mantener consistencia y leer la consulta de izquierda a derecha.

En la práctica casi nadie usa RIGHT JOIN. Reescribe siempre con LEFT.

¿Qué pasa con las filas duplicadas?

Si la clave del JOIN se repite en alguna tabla, el resultado se multiplica. Por ejemplo, si una clave aparece 2 veces en A y 3 veces en B, esa clave generará 6 filas en el resultado.

Si te aparecen muchas más filas de las esperadas, casi seguro hay duplicados en una de las tablas.

¿FULL OUTER JOIN está soportado en todos los SGBD?

No. PostgreSQL, SQL Server, Oracle y SQLite (3.39+) lo soportan. MySQL no lo soporta de forma nativa; hay que simularlo con UNION de un LEFT JOIN y un RIGHT JOIN excluyendo la intersección.

Antes de usar FULL OUTER, comprueba la documentación de tu motor.

¿NATURAL JOIN es lo mismo que INNER JOIN?

No exactamente. NATURAL JOIN une automáticamente por todas las columnas con el mismo nombre en ambas tablas, sin que tú las especifiques. Es cómodo pero peligroso: si añaden una columna con el mismo nombre, la consulta cambia de significado silenciosamente.

Mejor usa siempre INNER JOIN ... ON explícito. Es más verboso pero robusto.

Cómo Escribir el JOIN Correcto — Paso a Paso

1
Identifica las tablas y la columna que las relaciona

Localiza la clave primaria (PK) de una tabla y la clave foránea (FK) que apunta a ella en la otra. Ese es el ON de tu JOIN.

2
Decide qué quieres ver

¿Solo coincidencias? INNER. ¿Todo A aunque no haya pareja? LEFT. ¿Todo de ambos lados? FULL OUTER. ¿Combinaciones puras? CROSS.

3
Escribe la consulta con alias claros

Usa alias cortos (e para empleados, d para departamentos) y prefija siempre las columnas: e.nombre, d.nombre. Evita ambigüedad.

4
Prueba con una muestra pequeña

Antes de ejecutar sobre millones de filas, prueba con LIMIT 10 y revisa que el resultado tiene sentido. Si hay 100 filas donde esperabas 10, investiga duplicados.

5
Verifica con conteos

Compara COUNT(*) antes y después del JOIN. En un INNER JOIN bien hecho con FK válida, no debe perderse ni multiplicarse el conteo principal.

Mejores Prácticas

Usa siempre ON explícito

Evita NATURAL JOIN y USING. ON tabla1.id = tabla2.id_externo es autoexplicativo y robusto frente a cambios de esquema.

Pon alias a las tablas

FROM empleados e JOIN departamentos d hace consultas largas legibles y evita ambigüedad en columnas.

Indexa las columnas del ON

Sin índices en las claves del JOIN, la consulta hará scan completo. Las FKs suelen indexarse automáticamente, pero verifícalo.

Filtra en la cláusula ON cuando puedas

Para LEFT JOIN, filtrar la tabla derecha en el ON conserva las filas huérfanas; filtrar en WHERE las elimina. Es un error clásico.

Verifica con EXPLAIN

EXPLAIN SELECT ... muestra el plan de ejecución y avisa si el SGBD hará un nested loop sobre tablas enormes.

Cuenta antes y después

Si esperas N filas y obtienes 10·N, casi seguro hay duplicados. Si obtienes N/3, algo se está filtrando que no debería.

Errores frecuentes a evitar
  • Olvidar la cláusula ON convierte un INNER JOIN en CROSS JOIN: explosión de filas.
  • Filtrar columnas de la tabla derecha en WHERE de un LEFT JOIN: anula el OUTER.
  • Asumir que NULL = NULL en el ON: NULL nunca es igual a nada, ni a sí mismo.
  • Encadenar 5+ JOINs sin verificar duplicados: el resultado puede ser cartesiano oculto.
  • Usar SELECT * en JOIN: trae columnas duplicadas y oculta ambigüedad de nombres.
  • Confundir LEFT con RIGHT al cambiar el orden de las tablas: lee dos veces antes de ejecutar en producción.

Apps relacionadas