Teradata – se une

Se utiliza una concatenación para combinar registros de más de una tabla. Las tablas se combinan en función de columnas / valores comunes de estas tablas.

Hay diferentes tipos de combinaciones disponibles.

  • Conexión interna
  • Izquierda combinación externa
  • Unión exterior derecha
  • Unión externa completa
  • Auto-unirse
  • Conexión cruzada
  • Asociación de producción cartesiana

CONEXION INTERNA

Una combinación interna 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 tabla de pagos.

Numero de empleado. Nombre Apellido Fecha de Ingreso Departamento No Fecha de cumpleaños
101 Miguel James 27/03/2005 una 01/05/1980
102 Robert Williams 25/04/2007 2 05/03/1983
103 Pedro Paul 21/03/2007 2 01/04/1983
104 Alex Stewart 01/02/2008 2 06/11/1984
105 Robert James 04.01.2008 3 01/12/1984
Numero de empleado. Bruto Retencion Salario neto
101 40.000 4000 36.000
102 80.000 6000 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 las referencias de columna tienen un 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

CONEXION EXTERNA

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

  • CONEXIÓN EXTERIOR IZQUIERDA devuelve todos los registros de la tabla de la izquierda y solo devuelve los registros coincidentes de la tabla de la derecha.

  • CONEXIÓN EXTERIOR DERECHA devuelve todos los registros de la tabla de la derecha y solo devuelve las filas coincidentes de la tabla de la izquierda.

  • CONEXIÓN EXTERNA COMPLETA combina los resultados de las UNIONES EXTERIOR IZQUIERDA y EXTERIOR DERECHA. Devuelve filas coincidentes y no coincidentes de tablas unidas.

Sintaxis

A continuación se muestra la sintaxis de la instrucción OUTER JOIN. Debe utilizar una de las opciones 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 una solicitud LEFT OUTER JOIN. Devuelve todos los registros de la tabla Empleado y los registros correspondientes 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, da el siguiente resultado. Para el empleado 105, el valor de NetPay es NULL porque 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             ?

CONEXIÓN CRUZADA

Cross Join une cada fila de la tabla de la izquierda con cada fila 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, da el siguiente resultado. EmployeeNo 101 de la tabla Employee está concatenado con cada registro de la tabla Salario.

*** 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

🚫