Contenido del curso
Bases de Datos: De Cero a Experto

🎯 Objetivo:

Aprender a combinar información de dos o más tablas relacionadas usando diferentes tipos de JOIN, y entender cuándo usar cada uno.


🧠 ¿Qué es un JOIN?

Un JOIN permite consultar datos que están distribuidos en varias tablas, basándonos en las relaciones entre ellas (por ejemplo, claves primarias y foráneas).


🔗 Tipos de JOIN más usados:

Tipo de JOIN ¿Qué devuelve?
INNER JOIN Solo las coincidencias en ambas tablas
LEFT JOIN Todos los datos de la tabla izquierda + coincidencias de la derecha
RIGHT JOIN Todos los datos de la derecha + coincidencias de la izquierda
FULL JOIN* Todos los datos, coincidan o no (no siempre disponible en todos motores SQL)

* MySQL no soporta FULL JOIN directamente.


🧪 Ejemplo práctico: Clientes y Ventas

🔷 Tablas:

cliente

id_cliente nombre
1 Camila Soto
2 Tomás Rojas
3 Ana Díaz

venta

id_venta id_cliente fecha
1 1 2024-05-01
2 2 2024-06-01

🔍 INNER JOIN

sql
 
SELECT cliente.nombre, venta.fecha
FROM cliente
INNER JOIN venta
ON cliente.id_cliente = venta.id_cliente;

🟢 Devuelve solo los clientes que tienen ventas.


🔍 LEFT JOIN

sql
 
SELECT cliente.nombre, venta.fecha
FROM cliente
LEFT JOIN venta
ON cliente.id_cliente = venta.id_cliente;

🟢 Devuelve todos los clientes, incluso los que no tienen ventas (fecha aparecerá como NULL si no hay venta).


🔍 RIGHT JOIN (no muy común)

sql
 
SELECT cliente.nombre, venta.fecha
FROM cliente
RIGHT JOIN venta
ON cliente.id_cliente = venta.id_cliente;

🟢 Devuelve todas las ventas, incluso si no hay un cliente (raro, pero posible en datos corruptos o externos).


📝 Fragmento práctico

  1. Escribe una consulta que muestre el nombre del cliente y la fecha de cada venta (INNER JOIN).

  2. Escribe otra que muestre todos los clientes y su última venta si existe (LEFT JOIN).

  3. ¿Qué muestra un INNER JOIN si no hay relación entre las tablas?


💡 Consejos

  • Siempre debes usar ON con la condición de emparejamiento (id_cliente = id_cliente)

  • LEFT JOIN es muy útil para informes y paneles, donde quieres mostrar “quién no ha comprado aún”


✅ Revisión rápida

  • ¿Qué diferencia hay entre INNER JOIN y LEFT JOIN?

  • ¿Cuál usarías para ver todos los clientes aunque no hayan comprado?

Scroll al inicio