Tabellen können mit Join-Bedingungen kombiniert werden. Eine Join-Bedingung ist eine Suchbedingung. Sie wählt eine Teilmenge von Zeilen aus den verknüpften Tabellen aus, basierend auf den Beziehungen zwischen den Werten in den Spalten. Folgende Abfrage ruft z.B. Daten aus den Tabellen "Products" und "SalesOrderItems" ab.
SELECT * FROM Products JOIN SalesOrderItems ON Products.ID = SalesOrderItems.ProductID; |
Die Join-Bedingung in dieser Abfrage lautet wie folgt:
Products.ID = SalesOrderItems.ProductID |
Diese Join-Bedingung bedeutet, dass Zeilen in der Ergebnismenge nur kombiniert werden können, wenn sie in beiden Tabellen dieselbe Produkt-ID haben.
Join-Bedingungen können explizit sein oder generiert werden. Eine explizite Join-Bedingung ist eine Join-Bedingung, die sich in einer ON- oder WHERE-Klausel befindet. Folgende Abfrage verwendet eine ON-Klausel: Sie produziert ein Kreuzprodukt der beiden Tabellen (alle Zeilenkombinationen), wobei jedoch Zeilen ausgeschlossen werden, deren ID-Nummern nicht übereinstimmen. Das Ergebnis ist eine Liste mit Kunden und Details ihrer Bestellungen.
SELECT * FROM Customers JOIN SalesOrders ON SalesOrders.CustomerID = Customers.ID; |
Eine generierte Join-Bedingung ist eine Join-Bedingung, die automatisch erstellt wird, wenn Sie KEY JOIN oder NATURAL JOIN festlegen. Bei Schlüssel-Joins basiert die generierte Join-Bedingung auf den Beziehungen der Fremdschlüssel zwischen den Tabellen. Im Fall natürlicher Joins basiert die generierte Join-Bedingung auf Spalten, die denselben Namen haben.
Die Syntax des Schlüssel-Joins und des natürlichen Joins sind Abkürzungen: Sie erhalten identische Ergebnisse, wenn Sie das Schlüsselwort JOIN ohne KEY oder NATURAL verwenden und dann dieselbe Join-Bedingung in einer ON-Klausel angeben.
Wenn Sie eine ON-Klausel mit einem Schlüssel-Join oder einem natürlichen Join verwenden, ist die Join-Bedingung die Verbindung der expliziten Join-Bedingung mit der generierten Join-Bedingung. Das bedeutet, dass die Join-Bedingungen mit dem Schlüsselwort AND verknüpft werden.
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2010, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.0 |