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 » Schlüssel-Joins » Schlüssel-Joins von Tabellenausdrücken

 

Schlüssel-Joins von Tabellenausdruckslisten

Um eine Join-Bedingung für den Schlüssel-Join von zwei Tabellenausdruckslisten zu erstellen, untersucht SQL Anywhere die Tabellenpaare aus der Anweisung und generiert für jedes Paar eine Join-Bedingung. Die endgültige Join-Bedingung ist schließlich die Verbindung der Join-Bedingungen für jedes Paar. Zwischen jedem Paar muss eine Fremdschlüsselbeziehung bestehen.

Folgendes Beispiel verknüpft die beiden Tabellenpaare A-C und B-C:

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

SQL Anywhere generiert eine Join-Bedingung, um C mit (A,B) zu verknüpfen, indem für jedes der beiden Paare A-C und B-C eine Join-Bedingung generiert wird. Dabei werden die Regeln für Schlüssel-Joins bei mehreren Fremdschlüsselbeziehungen befolgt:

  • SQL Anywhere sucht für jedes Paar nach einem Fremdschlüssel, dessen Rollenname dem Korrelationsnamen der Primärschlüsseltabelle 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 Paare ein Fremdschlüssel mit dem Korrelationsnamen der Tabelle vorhanden ist, sucht SQL Anywhere nach einer beliebigen Fremdschlüsselbeziehung zwischen den Tabellen. Wenn es 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 bestimmen kann, werden die Join-Bedingungen mit AND verknüpft.

 Beispiel
 Siehe auch