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.
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2013, SAP AG oder ein SAP-Konzernunternehmen. - SAP Sybase SQL Anywhere 16.0 |