Relaciones · mapa de uniones externas

OUTER JOIN

Nombre de la familia de uniones que puede conservar filas aunque no encuentren una coincidencia.

Lectura: 5–7 minComparativa visualPráctica de elección
Contenido de esta guía

Qué significa OUTER JOIN

Una unión externa conserva al menos uno de los conjuntos completos. Las filas sin pareja no desaparecen: el motor las completa con NULL en las columnas del lado ausente.

OUTER JOIN no suele escribirse solo. Se elige una dirección: LEFT OUTER JOIN, RIGHT OUTER JOIN o FULL OUTER JOIN. La palabra OUTER es opcional en estas formas.

Elige qué filas conservar

TipoConservaAusencia representada
LEFT JOINTodas las filas de la izquierdaNULL en columnas derechas
RIGHT JOINTodas las filas de la derechaNULL en columnas izquierdas
FULL JOINTodas las filas de ambos ladosNULL en el lado sin pareja

Ejemplo guiado con LEFT OUTER JOIN

Piensa primero en la pregunta. «Todos los empleados, tengan o no responsable» señala que el alias e debe quedar en el lado conservado.

La tabla empleados aparece dos veces con alias diferentes. Carmen se conserva aunque su responsable_id sea NULL.

Resultado comprobado en SQLite
idempleadoresponsable
1Carmen SolerNULL
3Bea MolinaAlex Ramos
6Ernesto CanoCarlos Peña
Empleados con o sin responsable
SELECT e.id,
       e.nombre AS empleado,
       r.nombre AS responsable
FROM empleados AS e
LEFT OUTER JOIN empleados AS r
  ON r.id = e.responsable_id
WHERE e.id IN (1, 3, 6)
ORDER BY e.id;

Error frecuente

Confundir OUTER con una instrucción independiente

OUTER JOIN necesita una dirección. Escribe LEFT, RIGHT o FULL según el conjunto que deba sobrevivir sin coincidencia.

Otro error común es aplicar en WHERE un filtro que rechaza los NULL creados por la unión y termina comportándose como una unión interna.

Comprueba lo aprendido

Básica · decisión

Elige el tipo correcto

Necesitas listar todos los productos, incluso los que nunca aparecen en detalle_pedido. ¿Qué tabla debe ir a la izquierda y qué unión usarías?

Compatibilidad entre motores

PostgreSQL y SQL Server ofrecen LEFT, RIGHT y FULL OUTER JOIN. SQLite ofrece los tres desde 3.39.0. MySQL 8.4 documenta LEFT y RIGHT, pero no un operador FULL directo. La palabra OUTER puede omitirse en las formas admitidas.

Qué debes recordar

  • Una unión externa conserva filas sin coincidencia.
  • LEFT, RIGHT y FULL indican qué lado se conserva.
  • Las ausencias aparecen como NULL.
  • Un filtro posterior puede eliminar esas filas sin querer.

Conceptos relacionados

Fuentes técnicas consultadas