Tutorial de SQL
Cómo usar INNER JOIN en SQL
JOIN (o INNER JOIN) junta las filas de dos tablas que hacen pareja, por ejemplo cada calificación con el nombre de su alumno. Con ON indicas qué columna de una tabla debe ser igual a la de la otra, y solo quedan las filas que encontraron pareja. Aquí verás la sintaxis, un ejemplo resuelto y qué pasa si la pareja está mal.
JOIN: juntar dos tablas
En una base de datos la información se reparte en varias tablas para no repetirla: la factura guarda solo el número del cliente (cliente_id) y el nombre vive una sola vez en la tabla clientes.
JOIN junta las filas de dos tablas que «hacen pareja». Con ON dices cuál es la pareja: la columna de una tabla que debe ser igual a la columna de la otra.
Este JOIN (también llamado INNER JOIN) solo deja las filas que encontraron pareja en ambas tablas.
Cómo se escribe
SELECT columnas FROM tabla1 JOIN tabla2 ON tabla1.columna = tabla2.columna
- JOIN tabla2
- la segunda tabla que quieres juntar
- ON
- la condición que dice qué filas hacen pareja
- tabla1.columna
- tabla, punto y columna: así dices de qué tabla es cada columna
- INNER JOIN
- es lo mismo que JOIN (INNER es opcional)
Ejemplo resuelto
SELECT nombre, materia, calificacion FROM calificaciones JOIN alumnos ON calificaciones.alumno_id = alumnos.id| Número de fila# | nombre | materia | calificacion |
|---|---|---|---|
| 1 | Valeria Núñez | Matemáticas | 9.5 |
| 2 | Valeria Núñez | Español | 9.2 |
| 3 | Valeria Núñez | Historia | 9.6 |
| 4 | Emiliano Rojas | Matemáticas | 7.4 |
| 5 | Emiliano Rojas | Español | 8.1 |
| 6 | Emiliano Rojas | Historia | 7.9 |
| 7 | Camila Ortega | Matemáticas | 8.8 |
| 8 | Camila Ortega | Español | 8.3 |
| 9 | Camila Ortega | Historia | 8.7 |
| 10 | Santiago Flores | Matemáticas | 6.5 |
| 11 | Santiago Flores | Español | 7.3 |
| 12 | Regina Salinas | Matemáticas | 10 |
| 13 | Regina Salinas | Español | 9.7 |
| 14 | Regina Salinas | Historia | 9.8 |
| 15 | Diego Cárdenas | Matemáticas | 6.8 |
| 16 | Diego Cárdenas | Español | 7.6 |
| 17 | Diego Cárdenas | Historia | 7.1 |
| 18 | Ximena Paz | Matemáticas | 8.2 |
| 19 | Ximena Paz | Español | 7.9 |
| 20 | Ximena Paz | Historia | 8.4 |
| 21 | Sebastián Lara | Matemáticas | 9.3 |
| 22 | Sebastián Lara | Español | 8.9 |
| 23 | Sebastián Lara | Historia | 9 |
| 24 | Mateo Guzmán | Matemáticas | 8.6 |
| 25 | Mateo Guzmán | Español | 9.1 |
| 26 | Mateo Guzmán | Historia | 8.9 |
Cada calificación con el nombre del alumno (calificaciones solo guarda alumno_id).
En SQL Server: En SQL Server se escribe igual: JOIN … ON …
- Sin ON (o con la pareja equivocada) cada fila se junta con todas las de la otra tabla y salen cientos de filas repetidas.
- La pareja casi siempre es «la columna _id de una tabla = el id de la otra».
- Escribir tabla.columna es opcional si el nombre de la columna solo existe en una de las tablas.
Preguntas frecuentes
¿Es lo mismo JOIN que INNER JOIN?
Sí. INNER es opcional: JOIN e INNER JOIN hacen exactamente lo mismo.
¿Por qué mi JOIN devuelve cientos de filas repetidas?
Porque falta el ON o la pareja está mal: cada fila se junta con todas las de la otra tabla. La pareja casi siempre es «la columna _id de una tabla = el id de la otra».
¿Qué pasa con las filas que no tienen pareja?
INNER JOIN las deja fuera. Si necesitas conservarlas, usa LEFT JOIN.