Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (Deutsch) » SQL Anywhere Server - SQL-Benutzerhandbuch » Daten abfragen und ändern » Joins: Daten aus mehreren Tabellen abrufen

 

Natürliche Joins

Wenn Sie einen natürlichen Join festlegen, generiert SQL Anywhere eine Join-Bedingung, basierend auf Spalten mit demselben Namen. Damit dies in einem natürlichen Join von Basistabellen funktioniert, muss mindestens ein Spaltenpaar mit demselben Namen vorhanden sein, wobei aus jeder Tabelle jeweils eine Spalte stammt. Wenn kein gemeinsamer Spaltenname vorhanden ist, wird ein Fehler ausgegeben.

Tabelle A und Tabelle B haben einen gemeinsamen Spaltennamen, nämlich x:

SELECT *
FROM A NATURAL JOIN B;

Diese Anweisung entspricht folgender Anweisung:

SELECT *
FROM A JOIN B
 ON A.x = B.x;

Wenn Tabelle A und Tabelle B zwei gemeinsame Spaltennamen enthalten, die a und b heißen, ist A NATURAL JOIN B gleichwertig zur folgenden Anweisung:

A JOIN B
 ON A.a = B.a
 AND A.b = B.b;
Beispiel 1

Sie können z.B. die Tabellen "Employees" und "Departments" mit einem natürlichen Join verbinden, da sie einen Spaltennamen gemeinsam haben, nämlich die Spalte "DepartmentID".

SELECT GivenName, Surname, DepartmentName
FROM Employees NATURAL JOIN Departments
ORDER BY DepartmentName, Surname, GivenName;
GivenName Surname DepartmentName
Janet Bigelow Finance
Kristen Coe Finance
James Coleman Finance
Jo Ann Davidson Finance
... ... ...

Folgende Anweisung ist gleichwertig. Sie gibt explizit die Join-Bedingung an, die im vorangehenden Beispiel generiert wurde.

SELECT GivenName, Surname, DepartmentName
FROM Employees JOIN Departments
  ON (Employees.DepartmentID = Departments.DepartmentID)
ORDER BY DepartmentName, Surname, GivenName;
Beispiel 2

Führen Sie in Interactive SQL folgende Abfrage aus:

SELECT Surname, DepartmentName
FROM Employees NATURAL JOIN Departments;
Surname DepartmentName
Whitney R & D
Cobb R & D
Breault R & D
Shishov R & D
Driscoll R & D
... ...

SQL Anywhere prüft die beiden Tabellen und stellt fest, dass der einzige gemeinsame Spaltenname "DepartmentID" lautet. Die nachfolgende ON-Klausel wird intern generiert und zum Durchführen des Joins benutzt:

FROM Employees JOIN Departments
   ON Employees.DepartmentID = Departments.DepartmentID

NATURAL JOIN ist lediglich eine Kurzform für die Eingabe der ON-Klausel. Die beiden Abfragen sind identisch.


Fehler bei der Verwendung von natürlichen Joins
Natürliche Joins mit ON-Klausel
Natürliche Joins von Tabellenausdrücken
Natürliche Joins von Ansichten und abgeleiteten Tabellen