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

SQL Anywhere 12.0.0 (Deutsch) » SQL Anywhere Server - SQL-Benutzerhandbuch » Daten abfragen und ändern » Joins: Daten aus mehreren Tabellen abrufen » Schlüssel-Joins » Schlüssel-Joins von Tabellenausdrücken

 

Schlüssel-Joins von Listen und Tabellenausdrücken ohne Kommas

Wenn Tabellenausdruckslisten über einen Schlüssel-Join mit Tabellenausdrücken verknüpft werden, die keine Kommas enthalten, generiert SQL Anywhere für jede Tabelle in der Tabellenausdrucksliste eine Join-Bedingung.

Folgende Anweisung ist z.B. der Schlüssel-Join einer Tabellenausdrucksliste und eines Tabellenausdrucks, der keine Kommas enthält. Dieses Beispiel generiert eine Join-Bedingung für Tabelle A mit dem Tabellenausdruck C NATURAL JOIN D, und für Tabelle B mit dem Tabellenausdruck C NATURAL JOIN D.

SELECT *
FROM (A,B) KEY JOIN (C NATURAL JOIN D);

(A,B) ist eine Liste von Tabellenausdrücken, und C NATURAL JOIN D ist ein Tabellenausdruck. SQL Anywhere muss daher zwei Join-Bedingungen generieren: Es wird eine Join-Bedingung für die Paare A-C und A-D generiert und eine zweite Join-Bedingung für die Paare B-C und B-D. Dabei werden die Regeln für Schlüssel-Joins bei mehreren Fremdschlüsselbeziehungen befolgt:

  • SQL Anywhere sucht für jedes Tabellenpaar nach einem Fremdschlüssel, dessen Rollenname dem Korrelationsnamen einer der Primärschlüsseltabellen entspricht. Wenn genau ein Fremdschlüssel diese Bedingung erfüllt, wird dieser verwendet. Wenn es mehrere gibt, ist der Join zweideutig, und es wird ein Fehler ausgegeben.

  • Wenn für keines der Tabellenpaare ein Fremdschlüssel mit dem Korrelationsnamen einer Tabelle vorhanden ist, sucht SQL Anywhere nach einer beliebigen Fremdschlüsselbeziehung zwischen den Tabellen. Wenn es genau eine solche Beziehung gibt, wird sie verwendet. Wenn es mehrere gibt, ist der Join zweideutig, und es wird ein Fehler ausgegeben.

  • Wenn für keines der Paare eine Fremdschlüsselbeziehung vorhanden ist, wird ein Fehler ausgegeben.

  • Wenn SQL Anywhere für jedes Paar genau eine Join-Bedingung feststellen kann, werden die Join-Bedingungen mit dem Schlüsselwort AND verknüpft.

 Beispiel 1
 Beispiel 2