lunes, 22 de noviembre de 2010

SQL JOIN

Join: inner join, left outer join, right outer join

La sentencia join en SQL permite combinar registros de dos o más tablas en una base de datos relacional


Tablas de ejemplo:


INNER JOIN:


Con esta operación se calcula el producto cruzado de todos los registros; así cada registro en la tabla A es combinado con cada registro de la tabla B; pero sólo permanecen aquellos registros en la tabla combinada que satisfacen las condiciones que se especifiquen. Este es el tipo de JOIN más utilizado por lo que es considerado el tipo de combinación predeterminado.

SELECT *
FROM empleado
INNER JOIN departamento
ON empleado.IDdepartamento = departamento.IDdepartamento

Resultado:



COMBINACION EXTERNA (OUTER JOIN)

Mediante esta operación no se requiere que cada registro en las tablas a tratar tenga un registro equivalente en la otra tabla. El registro es mantenido en la tabla combinada si no existe otro registro que le corresponda.

de tabla izquierda (LEFT OUTER JOIN o LEFT JOIN)

El resultado de esta operación siempre contiene todos los registros de la tabla de la izquierda (la primera tabla que se menciona en la consulta), aun cuando no exista un registro correspondiente en la tabla de la derecha, para uno de la izquierda.
La sentencia LEFT OUTER JOIN retorna la pareja de todos los valores de la tabla izquierda con los valores de la tabla de la derecha correspondientes, o retorna un valor nulo NULL en caso de no correspondencia.


SELECT distinct *
FROM empleado
LEFT OUTER JOIN departamento
ON empleado.IDDepartamento = departamento.IDDepartamento


de tabla derecha (RIGHT OUTER JOIN o RIGHT JOIN)

Esta operación es inversa a la anterior; el resultado de esta operación siempre contiene todos los registros de la tabla de la derecha (la segunda tabla que se menciona en la consulta), aun cuando no exista un registro correspondiente en la tabla de la izquierda, para uno de la derecha.

La sentencia RIGHT OUTER JOIN retorna la pareja de todos los valores de la tabla derecha con los valores de la tabla de la izquierda correspondientes, o retorna un valor nulo NULL en caso de no correspondencia.


SELECT *
FROM empleado
RIGHT OUTER JOIN departamento
ON empleado.IDDepartamento = departamento.IDDepartamento

No hay comentarios:

Publicar un comentario