Módulo 4 · Relacionar tablas

Consolidación: elegir y comprobar un JOIN

Resuelve relaciones paso a paso y verifica que la cantidad de filas tenga sentido.

⏱ 30 minNivel: ConsolidaciónRequisito: Relaciones, INNER JOIN, LEFT JOIN y agregaciones

0 de 40 lecciones

Al terminar esta lección podrás

  • Elegir INNER o LEFT JOIN.
  • Comprobar cardinalidad.
  • Combinar JOIN, filtros y agregaciones.

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

La idea, sin código

La estrategia segura es identificar la entidad principal, dibujar las claves, decidir si deben conservarse filas sin pareja y comprobar la cardinalidad antes de resumir.

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

Sintaxis mínima

Estructura
-- Entidad principal
-- Relación ON
-- Tipo de JOIN
-- Filas esperadas
-- Resumen final

Primer ejemplo guiado

Datos de ejemplo: tabla autores
idnombre
1Carlos Ruiz Zafón
2Carmen Laforet
3Miguel Delibes
4Almudena Grandes
Datos de ejemplo: tabla libros
idtituloautor_iddisponible
1La sombra del viento11
2Nada20
3El camino31
4Marina11

Analiza la consulta antes de comprobar el resultado:

SQL
SELECT a.nombre, COUNT(l.id) AS libros
FROM autores AS a
LEFT JOIN libros AS l ON a.id = l.autor_id
GROUP BY a.id, a.nombre
ORDER BY libros DESC, a.nombre;
Resultado esperado
nombrelibros
Carlos Ruiz Zafón2
Carmen Laforet1
Miguel Delibes1
Almudena Grandes0

Qué ocurre paso a paso

  1. Autores es la entidad que debe aparecer siempre.
  2. LEFT JOIN conserva autores sin libros.
  3. COUNT(l.id) produce cero para Almudena.
Comprueba que lo entendiste

Si necesitas conservar todos los clientes, ¿qué tabla debe ir a la izquierda?

Error frecuente

Consulta o razonamiento problemático

Revisar
SELECT a.nombre, COUNT(*) FROM autores a LEFT JOIN libros l ON a.id = l.autor_id GROUP BY a.nombre;

COUNT(*) contaría una fila incluso para el autor sin libros. Cuenta l.id para medir coincidencias reales.

Práctica guiada

Básica · apoyo graduado

Resuelve una sola dificultad cada vez

Muestra cada cliente y cuántos pedidos enviados tiene, incluyendo cero.

Ahora sin guía

Intermedia · práctica autónoma

Transfiere lo aprendido

Crea una consulta que muestre préstamos abiertos con título y socio.

Comparar con una solución posible
SQL
SELECT l.titulo, p.socio
FROM prestamos AS p
JOIN libros AS l ON p.libro_id = l.id
WHERE p.fecha_devolucion IS NULL;

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

Resumen para llevarte

  • Empieza por la entidad que quieres conservar.
  • Comprueba la condición ON con las claves.
  • Cuenta una columna de la tabla relacionada cuando necesites cero.

Siguiente paso: Continúa con Subconsultas: usar el resultado de otra consulta.

Consulta rápida