Die Tabellen, die in einer ON-Klausel referenziert werden, müssen Teil des Joins sein, den die ON-Klausel ändert. Folgende Anweisung ist z.B. ungültig:
FROM ( A KEY JOIN B ) JOIN ( C JOIN D ON A.x = C.x ) |
Das Problem ist hier, dass die Join-Bedingung A.x = C.x
Tabelle A referenziert, die nicht Teil des Joins ist, den die Bedingung modifiziert (in diesem Fall C JOIN D
).
Im ANSI/ISO-Standard SQL99 und in Adaptive Server Anywhere 7.0 gibt es jedoch eine Ausnahme zu dieser Regel: Wenn Sie Kommas zwischen den Tabellenausdrücken verwenden, kann eine ON-Bedingung eines Joins eine Tabelle referenzieren, die ihr syntaktisch in der FROM-Klausel vorausgeht. Folgende Anweisung ist daher gültig:
FROM (A KEY JOIN B) , (C JOIN D ON A.x = C.x) |
Weitere Hinweise zu Kommas finden Sie unter Kommas.
Im folgenden Beispiel werden die Tabellen "SalesOrders" und "Employees" durch einen Join verknüpft. Jede Zeile im Ergebnis reflektiert die Zeilen in der Tabelle "SalesOrders", bei denen der Wert der Spalte "SalesRepresentative" mit dem Wert der Spalte "EmployeeID" in der Tabelle "Employees" übereinstimmt.
SELECT Employees.Surname, SalesOrders.ID, SalesOrders.OrderDate FROM SalesOrders JOIN Employees ON SalesOrders.SalesRepresentative = Employees.EmployeeID; |
Surname | ID | OrderDate |
---|---|---|
Chin | 2008 | 02.04.2001 |
Chin | 2020 | 04.03.2001 |
Chin | 2032 | 05.07.2001 |
Chin | 2044 | 15.07.2000 |
Chin | 2056 | 15.04.2001 |
... | ... | ... |
Es folgen einige Hinweise zu diesem Beispiel:
Die Ergebnisse dieser Abfrage enthalten nur 648 Zeilen (eine für jede Zeile in der Tabelle "SalesOrders"). Von den 48.600 Zeilen in dem Kreuzprodukt enthalten nur 648 in den beiden Tabellen dieselbe Mitarbeiternummer.
Die Reihenfolge der Ergebnisse ist ohne Bedeutung. Sie können eine ORDER BY-Klausel hinzufügen, um der Abfrage eine bestimmte Reihenfolge aufzuzwingen.
Die ON-Klausel schließt Spalten mit ein, die nicht in der endgültigen Ergebnismenge enthalten sind.
Kommentieren Sie diese Seite in DocCommentXchange. Senden Sie uns Feedback über diese Seite via E-Mail. |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |