Tutorial de SQL
Cómo usar LEFT JOIN en SQL
LEFT JOIN conserva todas las filas de la tabla de la izquierda, la que va en FROM, tengan pareja o no; cuando no la tienen, las columnas de la otra tabla salen vacías (NULL). Sirve para listar todos los alumnos o todos los clientes. Aquí verás la sintaxis, la diferencia con INNER JOIN y un ejemplo resuelto.
LEFT JOIN: conservar todas las filas de la izquierda
JOIN (INNER) solo deja las filas que tienen pareja en las dos tablas. A veces necesitas todas las filas de una tabla, tengan pareja o no: todos los alumnos, todos los clientes…
LEFT JOIN conserva todas las filas de la tabla de la izquierda (la que va en FROM). Cuando una fila no tiene pareja, las columnas de la otra tabla salen vacías (NULL).
Cómo se escribe
SELECT … FROM tabla_izquierda a LEFT JOIN tabla_derecha b ON b.a_id = a.id
- FROM tabla_izquierda
- de esta tabla salen TODAS las filas
- LEFT JOIN tabla_derecha
- trae sus datos solo si hay pareja; si no, NULL
- ON
- la condición de pareja, igual que en JOIN
Ejemplo resuelto
SELECT a.nombre, c.materia, c.calificacion FROM alumnos a LEFT JOIN calificaciones c ON c.alumno_id = a.id| Número de fila# | nombre | materia | calificacion |
|---|---|---|---|
| 1 | Valeria Núñez | Español | 9.2 |
| 2 | Valeria Núñez | Historia | 9.6 |
| 3 | Valeria Núñez | Matemáticas | 9.5 |
| 4 | Emiliano Rojas | Español | 8.1 |
| 5 | Emiliano Rojas | Historia | 7.9 |
| 6 | Emiliano Rojas | Matemáticas | 7.4 |
| 7 | Camila Ortega | Español | 8.3 |
| 8 | Camila Ortega | Historia | 8.7 |
| 9 | Camila Ortega | Matemáticas | 8.8 |
| 10 | Santiago Flores | Español | 7.3 |
| 11 | Santiago Flores | Matemáticas | 6.5 |
| 12 | Regina Salinas | Español | 9.7 |
| 13 | Regina Salinas | Historia | 9.8 |
| 14 | Regina Salinas | Matemáticas | 10 |
| 15 | Diego Cárdenas | Español | 7.6 |
| 16 | Diego Cárdenas | Historia | 7.1 |
| 17 | Diego Cárdenas | Matemáticas | 6.8 |
| 18 | Ximena Paz | Español | 7.9 |
| 19 | Ximena Paz | Historia | 8.4 |
| 20 | Ximena Paz | Matemáticas | 8.2 |
| 21 | Sebastián Lara | Español | 8.9 |
| 22 | Sebastián Lara | Historia | 9 |
| 23 | Sebastián Lara | Matemáticas | 9.3 |
| 24 | Renata Campos | NULL | NULL |
| 25 | Mateo Guzmán | Español | 9.1 |
| 26 | Mateo Guzmán | Historia | 8.9 |
| 27 | Mateo Guzmán | Matemáticas | 8.6 |
Todos los alumnos con sus calificaciones; Renata no tiene ninguna y aparece con materia y calificación vacías.
En SQL Server: En SQL Server es igual. También verás LEFT OUTER JOIN: OUTER es opcional y significa lo mismo.
- El orden de las tablas importa: la que va en FROM es la que conserva todas sus filas.
- Existe RIGHT JOIN (conserva la de la derecha), pero casi siempre se escribe LEFT JOIN cambiando el orden de las tablas: es más fácil de leer.
Preguntas frecuentes
¿Cuál es la diferencia entre INNER JOIN y LEFT JOIN?
INNER JOIN solo deja las filas con pareja en las dos tablas. LEFT JOIN conserva todas las de la izquierda y llena con NULL lo que no tiene pareja.
¿Importa el orden de las tablas en LEFT JOIN?
Sí: la tabla que va en FROM es la que conserva todas sus filas.
¿LEFT OUTER JOIN es lo mismo que LEFT JOIN?
Sí. OUTER es opcional y significa lo mismo, también en SQL Server.