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

SQL Anywhere 12.0.1 (Deutsch) » SQL Anywhere Server - SQL-Benutzerhandbuch » Abfrage und Änderung von Daten » Joins: Daten aus mehreren Tabellen abrufen » Spezielle Joins

 

Doppelte Korrelationsnamen in Joins (Stern-Joins)

Der Grund für die Verwendung doppelter Tabellennamen ist die Erstellung eines Stern-Joins. In einem Stern-Join wird eine Tabelle oder Ansicht mit mehreren anderen verknüpft.

Um einen Stern-Join zu erstellen, verwenden Sie denselben Tabellen-, Ansichts- oder Korrelationsnamen in der FROM-Klausel mehrfach. Dies ist eine Erweiterung zum ANSI/ISO SQL-Standard. Die Möglichkeit, Duplikatnamen zu verwenden, bietet keine zusätzliche Funktionalität, doch es wird einfacher, bestimmte Abfragen zu erstellen.

Die Duplikatnamen müssen in verschiedenen Joins enthalten sein, um sinnvoll zu sein. Wenn ein Tabellen- oder Ansichtsname in einem Join doppelt vorkommt, wird die zweite Instanz ignoriert. Beispiel: FROM A,A und FROM A CROSS JOIN A werden beide als FROM A interpretiert.

Folgendes Beispiel, in dem A, B und C Tabellen sind, ist in SQL Anywhere gültig. In diesem Beispiel wird dieselbe Instanz von Tabelle A sowohl mit B als auch mit C verknüpft. Beachten Sie, dass ein Komma erforderlich ist, um die Joins in einem Stern-Join zu trennen. Die Verwendung eines Kommas in einem Stern-Join ist spezifisch für die Syntax von Stern-Joins.

SELECT *
FROM A LEFT OUTER JOIN B ON A.x = B.x,
     A LEFT OUTER JOIN C ON A.y = C.y;

Das nächste Beispiel ist gleichwertig.

SELECT *
FROM A LEFT OUTER JOIN B ON A.x = B.x,
     C RIGHT OUTER JOIN A ON A.y = C.y;

Beide Beispiele sind gleichwertig zur folgenden ANSI/ISO-Standardsyntax: (Die Klammern sind optional.)

SELECT *
FROM (A LEFT OUTER JOIN B ON A.x = B.x)
LEFT OUTER JOIN C ON A.y = C.y;

Im nächsten Beispiel wird Tabelle mit drei Tabellen verknüpft: A, B und C.

SELECT *
FROM A JOIN B ON A.x = B.x,
     A JOIN C ON A.y = C.y,
     A JOIN D ON A.w = D.w;

Dies ist gleichwertig zur folgenden ANSI/ISO-Standardsyntax: (Die Klammern sind optional.)

SELECT *
FROM ((A JOIN B ON A.x = B.x)
JOIN C ON A.y = C.y)
JOIN D ON A.w = D.w;

Bei komplexen Joins kann es hilfreich sein, ein Diagramm zu zeichnen. Das obige Beispiel kann mit folgendem Diagramm beschrieben werden, das illustriert, dass die Tabellen B, C und D über Tabelle A verknüpft sind:

Tabelle A ist im Zentrum. während B, C, und D mit ihr verbunden sind.
Hinweis

Sie können doppelte Tabellennamen nur dann verwenden, wenn die Option "extended_join_syntax" auf "On" gesetzt ist (Standardeinstellung).

-

 Beispiel 1
 Beispiel 2
 Siehe auch