|

Outer joins en SQL

Hace días que llevo pensando en explicar cómo hacer un outer join en SQL (MySQL y Oracle), y hoy he encontrado unos diagramas que explican los diferentes tipos de joins que podemos hacer (MySQL).

El outer join se usa cuando queremos que obtener todos los campos de una tabla que cumplen una condición y los campos de otra tabla que coinciden con los de la primera tabla.

outerjoin.png

Imaginamos que tenemos una tabla de palabras en inglés y una tabla de traduciones:

Tabla : palabras
id / palabra
1 / bird
2 / flower
3 / sky
4 / tree
Tabla: traducciones
id / traduccion / idioma
1 / pájaro     / es
3 / cielo      / es

Se trata de tener la tabla de palabras y sus correspondientes traducciones (en este caso solo lo he hecho para español, pero se podrían incluir registros para otros idiomas). Si nos fijamos veremos que un join normal no lo podremos hacer porque si igualamos el id de palabras y traducciones habrá registros que no se mostrarán en la tabla de palabras porque no existen sus correspondientes en la tabla de traducciones. Por ello deberemos ejecutar las siguientes instrucciones en MySQL y Oracle:

/* MySQL */
SELECT *
FROM palabras
LEFT OUTER JOIN traducciones
ON palabras.id = traducciones.id
/* Oracle */
SELECT palabra, traduccion
FROM palabras, traducciones
WHERE palabras.id = traducciones.id (+)

Echadle un vistazo al resto de representaciones gráficas de los joins porque son muy aclaratorias.

A Visual Explanation of SQL Joins