Módulo 4 · Relacionar tablas

JOIN múltiples y duplicación de filas

Combina varias relaciones y aprende a diagnosticar resultados duplicados.

⏱ 28 minNivel: IntermedioRequisito: INNER JOIN y LEFT JOIN

0 de 40 lecciones

Al terminar esta lección podrás

  • Predecir cardinalidad.
  • Combinar JOIN y agregación.
  • Diagnosticar duplicaciones.

Antes de empezar: INNER JOIN y LEFT JOIN. Explica en una frase qué recuerdas antes de continuar.

La idea, sin código

Un JOIN no «añade columnas» de forma automática: crea combinaciones de filas. Si una fila tiene varias coincidencias, aparecerá varias veces. Antes de agregar otro JOIN, predice la cardinalidad.

Pregunta guía: ¿qué representa cada fila antes y después de aplicar este concepto?

Sintaxis mínima

Estructura
FROM a
JOIN b ON ...
JOIN c ON ...

Primer ejemplo guiado

Datos de ejemplo: tabla clientes
idnombreciudademail
1AnaMadridana@ejemplo.es
2LuisValencialuis@ejemplo.es
3MartaMadridNULL
4OmarSevillaomar@ejemplo.es
5NoraBilbaonora@ejemplo.es
Datos de ejemplo: tabla pedidos
idcliente_idfechatotalestado
10112026-07-0265enviado
10222026-07-04189pendiente
10312026-07-0944enviado
10432026-07-11899cancelado
10552026-07-15118enviado

Analiza la consulta antes de comprobar el resultado:

SQL
SELECT c.nombre, p.id, p.total
FROM clientes AS c
JOIN pedidos AS p ON c.id = p.cliente_id
WHERE c.ciudad = 'Madrid'
ORDER BY c.nombre, p.id;
Resultado esperado
nombreidtotal
Ana10165
Ana10344
Marta104899

Qué ocurre paso a paso

  1. Ana aparece dos veces porque tiene dos pedidos.
  2. Marta aparece una vez por su pedido.
  3. La repetición describe relaciones uno-a-muchos, no necesariamente un error.
Comprueba que lo entendiste

¿Por qué puede repetirse un cliente tras un JOIN?

Error frecuente

Consulta o razonamiento problemático

Revisar
JOIN clientes c ON p.cliente_id = c.id
JOIN clientes c2 ON p.cliente_id = c2.id

Unir dos veces la misma relación sin necesidad multiplica columnas y complica el resultado.

Práctica guiada

Básica · apoyo graduado

Resuelve una sola dificultad cada vez

Muestra clientes y el total de sus pedidos no cancelados, incluyendo cero.

Ahora sin guía

Intermedia · práctica autónoma

Transfiere lo aprendido

Explica cuántas filas esperas al unir clientes y pedidos antes de ejecutar.

Comparar con una solución posible
SQL
Se espera una fila por pedido coincidente y una fila adicional con NULL por cada cliente sin pedidos en un LEFT JOIN.

Puede existir otra solución válida. Comprueba que produce el resultado pedido y que puedes explicar cada cláusula.

Resumen para llevarte

  • Los JOIN crean combinaciones de filas.
  • Predice la cardinalidad antes de agregar tablas.
  • Una repetición puede ser correcta o señalar una condición incompleta.

Siguiente paso: Continúa con Consolidación: elegir y comprobar un JOIN.

Consulta rápida