ksms
Páginas: 7 (1642 palabras)
Publicado: 23 de octubre de 2014
La sentencia join en SQL permite combinar registros de dos o más tablas en una base de datos relacional. En el Lenguaje de Consultas Estructurado (SQL) hay tres tipos deJOIN: interno, externo y cruzado.
En casos especiales una tabla puede unirse a sí misma, produciendo una auto-combinación, SELF-JOIN.
Matemáticamente, JOIN es composición relacional, la operación fundamental enel álgebra relacional, y, generalizando, es una función de composición.
Tablas de ejemplo
Todas las explicaciones que están a continuación usan las siguientes dos tablas para ilustrar el efecto de diferentes clases de uniones JOIN.
Tabla Empleado
Apellido IDDepartamento
Andrade 31
Jordán 33
Steinberg 33
Róbinson 34
Zolano 34
Gaspar 36
Tabla Departamento
NombreDepartamento IDDepartamento
Ventas31
Ingeniería 33
Producción 34
Mercadeo 35
La tabla Empleado contiene los apellidos de los empleados junto al número del departamento al que pertenecen, mientras que la tabla Departamento contiene el nombre de los departamentos de la empresa.
Existen empleados que tienen asignado un número de departamento que no se encuentra en la tabla Departamento (Gaspar). Igualmente, existendepartamentos a los cuales no pertenece ningún empleado (Mercadeo). Esto servirá para presentar algunos ejemplos más adelante.
Combinación interna (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 quese especifiquen. Este es el tipo de JOIN más utilizado, por lo que es considerado el tipo de combinación predeterminado.
SQL:2003 especifica dos formas diferentes para expresar estas combinaciones. La primera, conocida como explícita, usa la palabra JOIN, mientras que la segunda es implícitay usa ',' para separar las tablas a combinar en la sentencia FROM de la declaración SELECT. Entonces siemprese genera el producto cruzado del cual se seleccionan las combinaciones que cumplan lo que indica la sentencia WHERE.
Es necesario tener especial cuidado cuando se combinan columnas con valores nulos NULL, ya que el valor nulo no se combina con otro valor o con otro nulo, excepto cuando se le agregan predicados tales como IS NULL o IS NOT NULL.
Como ejemplo, la siguiente consulta toma todos losregistros de la tabla Empleado y encuentra todas las combinaciones en la tabla Departamento. La sentencia JOIN compara los valores en la columna IDDepartamento en ambas tablas. Cuando no existe esta correspondencia entre algunas combinaciones, éstas no se muestran; es decir, que si el número de departamento de un empleado no coincide con los números de departamento de la tabla Departamento, no semostrará el empleado con su respectivo departamento en la tabla resultante.
Las dos consultas siguientes son similares y se realizan de manera explícita (A) e implícita (B).
A. Ejemplo de la sentencia INNER JOIN explícita:
SELECT Campos
FROM empleado
INNER JOIN departamento
ON empleado.IDDepartamento = departamento.IDDepartamento
B. Ejemplo de la sentencia INNERJOIN implícita:SELECT Campos
FROM empleado, departamento
WHERE empleado.IDDepartamento = departamento.IDDepartamento
Resultados:
Empleado.Apellido Empleado.IDDepartamento departamento.NombreDepartamento departamento.IDDepartamento
Zolano 34 Producción 34
Jordán 33 Ingeniería 33
Róbinson 34 Producción 34
Steinberg 33 Ingeniería 33
Andrade 31 Ventas 31
El empleado Gaspar y el departamento deMercadeo no son presentados en los resultados ya que ninguno de éstos tiene registros correspondientes en la otra tabla. No existe un departamento con número 36 ni existe un empleado con número de departamento 35.
A la combinación que utiliza comparaciones dentro del predicado JOIN se le llama theta-join.
C. Ejemplo de combinación tipo theta:
SELECT *
FROM empleado
INNER JOIN...
Leer documento completo
Regístrate para leer el documento completo.