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.
Siehe auch Schlüssel-Joins bei mehrfachen Fremdschlüsselbeziehungen.
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2010, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.0 |