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#nombremateriacalificacion
1Valeria NúñezMatemáticas9.5
2Valeria NúñezEspañol9.2
3Valeria NúñezHistoria9.6
4Emiliano RojasMatemáticas7.4
5Emiliano RojasEspañol8.1
6Emiliano RojasHistoria7.9
7Camila OrtegaMatemáticas8.8
8Camila OrtegaEspañol8.3
9Camila OrtegaHistoria8.7
10Santiago FloresMatemáticas6.5
11Santiago FloresEspañol7.3
12Regina SalinasMatemáticas10
13Regina SalinasEspañol9.7
14Regina SalinasHistoria9.8
15Diego CárdenasMatemáticas6.8
16Diego CárdenasEspañol7.6
17Diego CárdenasHistoria7.1
18Ximena PazMatemáticas8.2
19Ximena PazEspañol7.9
20Ximena PazHistoria8.4
21Sebastián LaraMatemáticas9.3
22Sebastián LaraEspañol8.9
23Sebastián LaraHistoria9
24Mateo GuzmánMatemáticas8.6
25Mateo GuzmánEspañol9.1
26Mateo GuzmánHistoria8.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.