Tipos de join en DB2

Un join en SQL es una consulta en la que se combinan dos tablas relacionadas mediante una cláusula WHERE en la que intervienen uno o más campos comunes entre ambas.

El resultado depende del tipo de join elegido y puede incluir filas nulas si la condición no se cumple para alguna de las tablas.

Siendo T1 la primera tabla y T2 la segunda, los resultados obtenidos con cada tipo de join son los siguientes.

INNER JOIN:  Filas de T1 y T2 que cumplen la condición emparejadas.

LEFT OUTER JOIN:  Filas de T1 y T2 que cumplen la condición emparejadas y, por cada fila de T1 que no cumple la condición, dicha fila concatenada con una fila nula de T2.

RIGHT OUTER JOIN: Filas de T1 y T2 que cumplen la condición emparejadas y, por cada fila de T2 que no cumple la condición, dicha fila concatenada con una fila nula de T1.

FULL OUTER JOIN: Filas de T1 y T2 que cumplen la condición emparejadas y, por cada fila de T1 que no cumple la condición, dicha fila concatenada con una fila nula de T2; y, por cada fila de T2 que no cumple la condición, dicha fila concatenada con una fila nula de T1.

Ejemplos

Dadas las siguientes tablas:

EMPRESAS

COD_EMPRESA EMPRESA
1 S.F. SOFTWARE
2 FRUTAS GARCIA
3 ALUMINIOS RUIZ
5 IMPRESIONES M.
S.

TRABAJADORES

COD_TRABAJADOR COD_EMPRESA TRABAJADOR
1 2 JUAN PEREZ
2 2 PEDRO
SÁNCHEZ
3 4 FELIPE
LÓPEZ
4 5 RODRIGO TORRES

INNER JOIN 

SELECT TRABAJADOR, EMPRESA
FROM TRABAJADORES INNER JOIN EMPRESAS
ON TRABAJADORES.COD_EMPRESA =  EMPRESAS.COD_EMPRESA

o bien simplemente:

SELECT TRABAJADOR, EMPRESA
FROM TRABAJADORES, EMPRESAS
WHERE TRABAJADORES.COD_EMPRESA = EMPRESAS.COD_EMPRESA

Se obtienen los nombres de los trabajadores y el nombre de la empresa en la que trabajan.

TRABAJADOR EMPRESA
PEDRO SANCHEZ FRUTAS GARCIA
RODRIGO TORRES IMPRESIONES M. S.
JUAN PEREZ FRUTAS GARCIA


LEFT JOIN 

SELECT NOMBRE_TRABAJADOR, NOMBRE_EMPRESA
FROM TRABAJADORES LEFT JOIN EMPRESAS
ON EMPRESAS.COD_EMPRESA = TRABAJADORES.COD_EMPRESA

Se obtienen los nombres de los trabajadores y el nombre de la empresa en que trabajan. Los trabajadores cuya empresa no existe en la tabla EMPRESAS aparecen también en los resultados, pero un con valor nulo en la columna proveniente de dicha tabla.

TRABAJADOR EMPRESA
PEDRO SANCHEZ FRUTAS GARCIA
FELIPE LOPEZ (null)
RODRIGO TORRES IMPRESIONES M. S.
JUAN PEREZ FRUTAS GARCIA

RIGHT JOIN

SELECT TRABAJADOR, EMPRESA
FROM TRABAJADORES RIGHT JOIN EMPRESAS
ON EMPRESAS.COD_EMPRESA = TRABAJADORES.COD_EMPRESA

Se obtienen los nombres de los trabajadores y el nombre de la empresa en que trabajan. Las empresas que no tengan ningún trabajador registrado en la tabla TRABAJADORES aparecen también en los resultados, pero un con valor nulo en la columna proveniente de dicha tabla.

TRABAJADOR EMPRESA
(null) S. F. SOFTWARE
JUAN PEREZ FRUTAS GARCIA
PEDRO SANCHEZ FRUTAS GARCIA
(null) ALUMINIOS RUIZ
RODRIGO TORRES IMPRESIONES M. S.

FULL OUTER JOIN

SELECT TRABAJADOR, EMPRESA
FROM TRABAJADORES FULL OUTER JOIN EMPRESAS
ON EMPRESAS.COD_EMPRESA = TRABAJADORES.COD_EMPRESA

Se obtienen los nombres de los trabajadores y el nombre de la empresa en que trabajan. También aparecen en los resultados los trabajadores que no tienen fila asociada en la tabla EMPRESAS y las empresas sin fila asociada en la tabla TRABAJADORES.

TRABAJADOR EMPRESA
PEDRO SANCHEZ FRUTAS GARCIA
FELIPE LOPEZ (null)
RODRIGO TORRES IMPRESIONES M. S.
JUAN PEREZ FRUTAS GARCIA
(null) S. F. SOFTWARE
(null) ALUMINIOS RUIZ

Deja un comentario