Teradata - Se une

La combinación se utiliza para combinar registros de más de una tabla. Las tablas se unen según las columnas / valores comunes de estas tablas.

Hay diferentes tipos de combinaciones disponibles.

  • Unir internamente
  • Izquierda combinación externa
  • Unión externa derecha
  • Unión externa completa
  • Auto unión
  • Unión cruzada
  • Unión de producción cartesiana

UNIR INTERNAMENTE

Inner Join combina registros de varias tablas y devuelve los valores que existen en ambas tablas.

Sintaxis

A continuación se muestra la sintaxis de la instrucción INNER JOIN.

SELECT col1, col2, col3…. 
FROM  
Table-1 
INNER JOIN 
Table-2 
ON (col1 = col2) 
<WHERE condition>;

Ejemplo

Considere la siguiente tabla de empleados y salario.

Numero de empleado Primer nombre Apellido JoinedDate Departamento No Fecha de nacimiento
101 Miguel James 27/03/2005 1 5/1/1980
102 Robert Williams 25/4/2007 2 05/03/1983
103 Pedro Pablo 21/03/2007 2 1/4/1983
104 Alex Stuart 1/2/2008 2 6/11/1984
105 Robert James 1/4/2008 3 1/12/1984
Numero de empleado Bruto Deducción Salario neto
101 40.000 4000 36.000
102 80.000 6.000 74.000
103 90.000 7.000 83.000
104 75.000 5,000 70.000

La siguiente consulta une la tabla Empleado y la tabla Salario en la columna común EmployeeNo. A cada tabla se le asigna un alias A y B y se hace referencia a las columnas con el alias correcto.

SELECT A.EmployeeNo, A.DepartmentNo, B.NetPay 
FROM  
Employee A 
INNER JOIN 
Salary B 
ON (A.EmployeeNo = B. EmployeeNo);

Cuando se ejecuta la consulta anterior, devuelve los siguientes registros. El empleado 105 no se incluye en el resultado porque no tiene registros coincidentes en la tabla Salario.

*** Query completed. 4 rows found. 3 columns returned. 
*** Total elapsed time was 1 second. 
 EmployeeNo   DepartmentNo     NetPay 
-----------  ------------   ----------- 
    101           1            36000 
    102           2            74000 
    103           2            83000 
    104           2            70000

ÚNETE EXTERIOR

LEFT OUTER JOIN y RIGHT OUTER JOIN también combinan los resultados de varias tablas.

  • LEFT OUTER JOIN devuelve todos los registros de la tabla de la izquierda y devuelve solo los registros coincidentes de la tabla de la derecha.

  • RIGHT OUTER JOIN devuelve todos los registros de la tabla de la derecha y devuelve solo las filas coincidentes de la tabla de la izquierda.

  • FULL OUTER JOINcombina los resultados de las UNIONES EXTERIOR IZQUIERDA y EXTERIOR DERECHA. Devuelve filas coincidentes y no coincidentes de las tablas unidas.

Sintaxis

A continuación se muestra la sintaxis de la instrucción OUTER JOIN. Debe utilizar una de las opciones de LEFT OUTER JOIN, RIGHT OUTER JOIN o FULL OUTER JOIN.

SELECT col1, col2, col3…. 
FROM  
Table-1 
LEFT OUTER JOIN/RIGHT OUTER JOIN/FULL OUTER JOIN 
Table-2 
ON (col1 = col2) 
<WHERE condition>;

Ejemplo

Considere el siguiente ejemplo de la consulta LEFT OUTER JOIN. Devuelve todos los registros de la tabla Empleado y los registros coincidentes de la tabla Salario.

SELECT A.EmployeeNo, A.DepartmentNo, B.NetPay 
FROM  
Employee A 
LEFT OUTER JOIN 
Salary B 
ON (A.EmployeeNo = B. EmployeeNo) 
ORDER BY A.EmployeeNo;

Cuando se ejecuta la consulta anterior, produce el siguiente resultado. Para el empleado 105, el valor de NetPay es NULO, ya que no tiene registros coincidentes en la tabla Salario.

*** Query completed. 5 rows found. 3 columns returned. 
*** Total elapsed time was 1 second. 
 EmployeeNo  DepartmentNo     NetPay 
-----------  ------------   ----------- 
    101           1           36000 
    102           2           74000 
    103           2           83000 
    104           2           70000 
    105           3             ?

ÚNETE CRUZADO

Cross Join une todas las filas de la tabla de la izquierda a todas las filas de la tabla de la derecha.

Sintaxis

A continuación se muestra la sintaxis de la instrucción CROSS JOIN.

SELECT A.EmployeeNo, A.DepartmentNo, B.EmployeeNo,B.NetPay 
FROM  
Employee A 
CROSS JOIN 
Salary B 
WHERE A.EmployeeNo = 101 
ORDER BY B.EmployeeNo;

Cuando se ejecuta la consulta anterior, produce el siguiente resultado. EmployeeNo 101 de la tabla de empleados se une con todos y cada uno de los registros de la tabla de salarios.

*** Query completed. 4 rows found. 4 columns returned. 
*** Total elapsed time was 1 second. 
 EmployeeNo  DepartmentNo   EmployeeNo    NetPay 
-----------  ------------  -----------  ----------- 
    101           1            101         36000 
    101           1            104         70000 
    101           1            102         74000 
    101           1            103         83000