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