SQL medio: JOIN, GROUP BY y HAVING

Relaciona tablas y construye métricas con joins y agregaciones para responder preguntas de negocio reales.

Con joins y agregaciones dejas de consultar tablas sueltas y empiezas a responder preguntas de producto y negocio.

El error clásico aquí es duplicar filas sin darte cuenta por joins mal definidos; vamos a evitarlo desde el principio.

Si notas huecos en modelado, repasa <a href="/curso/bbdd/leccion/bbdd-modelo-relacional-entidad-relacion-basico">entidad-relación</a>.

  • El tipo de join cambia el significado del resultado.
  • INNER JOIN devuelve coincidencias en ambas tablas. LEFT JOIN conserva la tabla izquierda aunque no haya match.
  • Antes de escribir join, define si necesitas solo datos relacionados o también registros sin relación.
  • Con joins y agregaciones dejas de consultar tablas sueltas y empiezas a responder preguntas de producto y negocio.
  • El error clásico aquí es duplicar filas sin darte cuenta por joins mal definidos; vamos a evitarlo desde el principio.

INNER y LEFT JOIN con intención

El tipo de join cambia el significado del resultado.

INNER JOIN devuelve coincidencias en ambas tablas. LEFT JOIN conserva la tabla izquierda aunque no haya match.

Antes de escribir join, define si necesitas solo datos relacionados o también registros sin relación.

Bases de datos
06

SQL medio: JOIN, GROUP BY y HAVING

Relaciona tablas y construye métricas con joins y agregaciones para responder preguntas de negocio reales.

Código del tema: Modelo relacional + consultas SQL

📘 Teoría

INNER y LEFT JOIN con intención

El tipo de join cambia el significado del resultado.

1

INNER JOIN devuelve coincidencias en ambas tablas. LEFT JOIN conserva la tabla izquierda aunque no haya match.

2

Antes de escribir join, define si necesitas solo datos relacionados o también registros sin relación.

JOIN clientes-pedidos
SELECT c.nombre, p.id AS pedido_id, p.total
FROM clientes c
INNER JOIN pedidos p ON p.cliente_id = c.id;

🧪 Aprende probando

Ejemplo Ejemplo guiado: INNER JOIN Lista pedidos junto al nombre del cliente.
Ejemplo Ejemplo guiado: total por cliente Agrupa y suma importes por cliente.
Ejemplo Demo: filtrar agregados con HAVING Mostrar clientes con gasto alto.

🏁 Retos

Reto Reto: usa LEFT JOIN Incluye clientes sin pedidos.
Reto Reto: filtra clientes top Añade HAVING para gasto > 1000.

🧰 Recursos

Test

Comprueba tus conocimientos con un test sobre Bases de datos.

Test de Bases de datos

¿Qué es esto?

Soy Cristian Eslava y a veces hago webs para procrastinar yo y vosotros 😉.

Esta la hice en febrero de 2026 para facilitar el aprendizaje de mis alumnxs. Aprender desarrollo web practicando. La idea es que crezca semanalmente con nuevos temas, tests y retos.

Inspirado en MDN, en W3Schools, en Codepen, en el crack de Manz y en mil sitios de documentación sobre desarrollo web. Quería aportar además de bloques teóricos con ejemplos, la gamificación de los retos y el sistema de test que ya tenía en culTest .

Si te gustó, si no te gustó, si quieres saludarme, o invitarme a 🍻 no dudes en escribirme en cristianeslava@gmail.com .