¡Adelante! Con este tutorial quiero que aprendas de forma clara y directa la cláusula JOIN de SQL.
Como no existe una sola forma de hacer un JOIN y como se lo importante que es para realizar un buen trabajo con base de datos, en este artículo te voy a dejar todos los tipos de JOIN que existen con ejemplos claros y explicaciones sencillas.
¿Qué es un JOIN SQL?
Un JOIN de SQL es la forma que tiene este lenguaje de obtener resultados relacionados entre varias tablas de forma coherente.
Los resultados serán registros compuestos por la información de varios registros en distintas tablas.
Un uso común de la cláusula JOIN sería por ejemplo cuando tenemos dos tablas relacionadas y de las que queremos obtener una información compuesta.
La estructura de un JOIN siempre será la misma y estará compuesta por 2 tablas y sus columnas a relacionar:
SELECT * FROM tabla1 JOIN tabla2 ON tabla1.columna1 = tabla2.columna3
Las columnas que intervienen en la unión de ambas tablas deberán de coincidir en TIPO y VALOR. De esta forma la base de datos será capaz de hacer la unión de las tablas y devolver filas compuestas por los datos de la fila de la primera tabla, más los datos de la fila de la segunda tabla.
Sé que es complicado entenderlo de forma conceptual, por esto mismo, a continuación voy a introducirte unas tablas que servirán de ejemplo para el resto del contenido de este artículo.
Tablas para los ejemplos de JOIN
Durante todo este tutorial voy a utilizar constantemente la información de 2 tablas: jugadores y equipos
Ejemplo tablas Clase y Alumno
Creo la tabla Clase con la siguiente consulta:
CREATE TABLE clase ( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, codigo VARCHAR(20) NOT NULL, observaciones VARCHAR(200) NULL );
La información que he introducido en la tabla para los ejemplos es la siguiente:
id | codigo | observaciones |
---|---|---|
1 | 1A | Los más estudiosos |
2 | 1B | Deben de mejorar |
3 | 1C | Media clase está suspendida |
4 | 2A | Ya casi han terminado DAW |
5 | 2B | Creo que van a repetir unos pocos |
6 | 2C | Sin alumnos |
Esta tabla tiene solo 3 columnas:
- Columna id que sirve para identificar cada fila de la tabla de forma única.
- Columna codigo que es un texto de 20 letras para identificar la clase. Por ejemplo 1A.
- Columna observaciones que es una columna con un pequeño texto a modo de observación. Valor ejemplo: alumnos escandalosos.
A continuación creo la tabla Alumno
CREATE TABLE alumno( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, nombre VARCHAR(20) NOT NULL, id_clase INT NULL );
Esta tabla tiene 3 columnas también y cada una es para:
- id: sirve para identificar de forma única a cada registro.
- nombre: nombre del alumno.
- id_clase: columna de referencia (clave ajena) a la tabla clase y su columna id.
Los valores de esta tabla serán los siguientes:
id | nombre | id_clase |
---|---|---|
1 | Jesús | 1 |
2 | Roberto | 2 |
3 | Wenceslao | 2 |
4 | Ruper | 10 |
5 | Laura | 4 |
6 | Ana | 3 |
7 | Juan | 1 |
8 | Manuel | 0 |
9 | Leonardo | 2 |
INNER JOIN en SQL
El primer tipo de JOIN que debes conocer es el INNER (interno) es el tipo de JOIN más común y el que probablemente más utilzarás.
Con un buen dominio de este JOIN podrás realizar consultas complejas de datos entre tablas relacionadas con suma facilidad.
El JOIN de tipo INNER se puede realizar de dos formas diferentes con mismos resultados:
- Especificando la cláusula y sus componentes en la cláusula FROM
- Relacionando columnas directamente en el WHERE.
INNER JOIN en FROM
SELECT alumno.nombre, alumno.apellido, clase.codigo FROM alumno INNER JOIN clase ON alumno.id = clase.id;
JOIN en WHERE
A continuación voy a realizar un INNER JOIN en la cláusula WHERE y su resultado será totalmente equivalente al del anterior ejemplo en el FROM:
SELECT alumno.nombre, alumno.apellido, clase.codigo FROM alumno, clase WHERE alumno.id = clase.id;