🎯 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
🟢 Devuelve solo los clientes que tienen ventas.
🔍 LEFT JOIN
🟢 Devuelve todos los clientes, incluso los que no tienen ventas (fecha aparecerá como NULL si no hay venta).
🔍 RIGHT JOIN (no muy común)
🟢 Devuelve todas las ventas, incluso si no hay un cliente (raro, pero posible en datos corruptos o externos).
📝 Fragmento práctico
-
Escribe una consulta que muestre el nombre del cliente y la fecha de cada venta (
INNER JOIN). -
Escribe otra que muestre todos los clientes y su última venta si existe (
LEFT JOIN). -
¿Qué muestra un
INNER JOINsi no hay relación entre las tablas?
💡 Consejos
-
Siempre debes usar
ONcon la condición de emparejamiento (id_cliente = id_cliente) -
LEFT JOINes 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 JOINyLEFT JOIN? -
¿Cuál usarías para ver todos los clientes aunque no hayan comprado?