3. Cruzando Información: Los JOINs 🔗
¿Por qué necesitamos JOINs?
Si modelaste correctamente tu Base de Datos (en Tercera Forma Normal), tu información estará esparcida en varias tablas. Los clientes en una tabla, los productos en otra, las ventas en otra.
Para hacer un reporte útil, necesitas cruzar esa información. Los JOINs usan las Llaves Primarias y Foráneas para combinar registros entre tablas.
| Tipo de JOIN | ¿Qué devuelve? | Caso de uso típico |
|---|---|---|
INNER JOIN | Solo las filas que coinciden en ambas tablas | Ventas con su cliente |
LEFT JOIN | Todas las filas de la izquierda + coincidencias de la derecha | Todos los clientes, compren o no |
RIGHT JOIN | Todas las filas de la derecha + coincidencias de la izquierda | Todos los productos, vendidos o no |
FULL OUTER JOIN | Todas las filas de ambas tablas | Auditoría completa |
CROSS JOIN | Producto cartesiano (todas las combinaciones posibles) | Menú de opciones |
SELF JOIN | Una tabla cruzada consigo misma | Jerarquías (empleado → jefe) |
1. INNER JOIN: Solo las coincidencias
Es el JOIN más común. Devuelve solo las filas donde existe una correspondencia exacta en ambas tablas. Si un cliente nunca hizo un pedido, no aparece.
2. LEFT JOIN: Todos los de la izquierda
Devuelve todas las filas de la tabla izquierda. Si no hay coincidencia en la tabla derecha, los campos de esa tabla se rellenan con NULL.
3. RIGHT JOIN: Todos los de la derecha
Igual que LEFT JOIN pero en sentido contrario. Devuelve todas las filas de la tabla derecha, con NULL donde no hay coincidencia en la izquierda.
RIGHT JOIN casi siempre puede reescribirse como un LEFT JOIN intercambiando el orden de las tablas. Elige el que sea más legible.
4. FULL OUTER JOIN: Todo de todos lados
Combina el resultado de LEFT y RIGHT JOIN. Devuelve todas las filas de ambas tablas, poniendo NULL donde no hay coincidencia en el otro lado.
5. CROSS JOIN: Producto Cartesiano
No usa una condición ON. Combina cada fila de la tabla A con cada fila de la tabla B. Si A tiene 3 filas y B tiene 4, el resultado es 3×4 = 12 filas.
6. SELF JOIN: Una tabla consigo misma
No es un keyword especial, sino una técnica. Usas alias para tratar la misma tabla como si fueran dos tablas distintas. Muy útil para relaciones jerárquicas.
🎮 Analizando el cruce
Si cruzas una tabla de 10 Alumnos con una de 5 Becas usando LEFT JOIN (desde Alumnos), ¿cuántas filas devuelve la consulta como mínimo?
👁️ Ver respuesta sugerida
10 filas. El LEFT JOIN siempre garantiza todas las filas de la tabla izquierda. Los 5 alumnos sin beca tendrán la columna de monto en NULL.