Teradata - tritt bei

Join wird verwendet, um Datensätze aus mehr als einer Tabelle zu kombinieren. Tabellen werden basierend auf den allgemeinen Spalten / Werten aus diesen Tabellen verknüpft.

Es stehen verschiedene Arten von Joins zur Verfügung.

  • Inner Join
  • Linke äußere Verbindung
  • Right Outer Join
  • Volle äußere Verbindung
  • Selbst beitreten
  • Cross Join
  • Kartesische Produktion beitreten

INNER JOIN

Inner Join kombiniert Datensätze aus mehreren Tabellen und gibt die Werte zurück, die in beiden Tabellen vorhanden sind.

Syntax

Es folgt die Syntax der INNER JOIN-Anweisung.

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

Beispiel

Betrachten Sie die folgende Mitarbeitertabelle und Gehaltsliste.

EmployeeNo Vorname Familienname, Nachname JoinedDate AbteilungNr Geburtsdatum
101 Mike James 27.03.2005 1 05.01.1980
102 Robert Williams 25.04.2007 2 05.03.1983
103 Peter Paul 21.03.2007 2 01.04.1983
104 Alex Stuart 01.02.2008 2 06.11.1984
105 Robert James 04.01.2008 3 01.12.1984
EmployeeNo Brutto Abzug Nettogehalt
101 40.000 4.000 36.000
102 80.000 6.000 74.000
103 90.000 7.000 83.000
104 75.000 5.000 70.000

Die folgende Abfrage verknüpft die Employee-Tabelle und die Salary-Tabelle in der allgemeinen Spalte EmployeeNo. Jeder Tabelle ist ein Alias ​​A & B zugeordnet, und auf die Spalten wird mit dem richtigen Alias ​​verwiesen.

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

Wenn die obige Abfrage ausgeführt wird, werden die folgenden Datensätze zurückgegeben. Mitarbeiter 105 ist nicht im Ergebnis enthalten, da die Gehaltstabelle keine übereinstimmenden Datensätze enthält.

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

OUTER JOIN

LEFT OUTER JOIN und RIGHT OUTER JOIN kombinieren auch die Ergebnisse aus mehreren Tabellen.

  • LEFT OUTER JOIN Gibt alle Datensätze aus der linken Tabelle und nur die übereinstimmenden Datensätze aus der rechten Tabelle zurück.

  • RIGHT OUTER JOIN Gibt alle Datensätze aus der rechten Tabelle zurück und gibt nur übereinstimmende Zeilen aus der linken Tabelle zurück.

  • FULL OUTER JOINkombiniert die Ergebnisse von LEFT OUTER und RIGHT OUTER JOINS. Es werden sowohl übereinstimmende als auch nicht übereinstimmende Zeilen aus den verknüpften Tabellen zurückgegeben.

Syntax

Es folgt die Syntax der OUTER JOIN-Anweisung. Sie müssen eine der Optionen von LEFT OUTER JOIN, RIGHT OUTER JOIN oder FULL OUTER JOIN verwenden.

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

Beispiel

Betrachten Sie das folgende Beispiel der Abfrage LEFT OUTER JOIN. Es werden alle Datensätze aus der Employee-Tabelle und übereinstimmende Datensätze aus der Salary-Tabelle zurückgegeben.

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

Wenn die obige Abfrage ausgeführt wird, wird die folgende Ausgabe erzeugt. Für Mitarbeiter 105 ist der NetPay-Wert NULL, da die Gehaltstabelle keine übereinstimmenden Datensätze enthält.

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

CROSS JOIN

Cross Join verbindet jede Zeile aus der linken Tabelle mit jeder Zeile aus der rechten Tabelle.

Syntax

Es folgt die Syntax der CROSS JOIN-Anweisung.

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

Wenn die obige Abfrage ausgeführt wird, wird die folgende Ausgabe erzeugt. EmployeeNo 101 aus der Employee-Tabelle wird mit jedem Datensatz aus der Salary Table verknüpft.

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