MySQL: INNER JOIN, LEFT JOIN y RIGHT JOIN

Para unir dos tablas o más en lenguaje SQL utilizamos normalmente el comando JOIN. Normalmente los que empezamos necesitamos un recordatorio de cómo funciona, aquí tenéis el mío!

El comando JOIN combina datos de dos tablas uniéndolas por valores en común, normalmente la columna ID.

Partamos de una base de datos de usuarios y roles. Cread esta base de datos en vuestro servidor MySQL:

Vamos a ver las tres maneras:

INNER JOIN: devuelve columnas en las que hay al menos una coincidencia en ambas tablas.

SELECT `tabla1`.`columna1`, `tabla2`.`columna1`
FROM `tabla1`
INNER JOIN `tabla2` ON `tabla1`.`columnaID` = `tabla2`.`columnaID`

SELECT usuario.nombre, rol.tipo
FROM usuario
INNER JOIN rol ON usuario.rol = rol.idrol
Resultado de INNER JOIN

INNER JOIN

LEFT JOIN: devuelve todas las columnas de la primera tabla en la cláusula JOIN con un NULL en la columna de la segunda tabla que no contenga nada

SELECT […] LEFT JOIN `tabla2` ON `tabla1`.`columnaID` = `tabla2`.`columnaID`

SELECT usuario.nombre, rol.tipo
FROM usuario
LEFT JOIN rol ON usuario.rol = rol.idrol
Resultado de LEFT JOIN

LEFT JOIN

RIGHT JOIN: devuelve todas las columnas de la primera tabla en la cláusula JOIN con un NULL en la columna de la segunda tabla que no contenga nada

SELECT […] RIGHT JOIN `tabla2` ON `tabla1`.`columnaID` = `tabla2`.`columnaID`

SELECT usuario.nombre, rol.tipo
FROM usuario
LEFT JOIN rol ON usuario.rol = rol.idrol
Resultado de RIGHT JOIN

RIGHT JOIN