Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.0 (Deutsch) » SQL Anywhere Server - SQL-Benutzerhandbuch » Daten abfragen und ändern » Joins: Daten aus mehreren Tabellen abrufen » Funktionsweise von Joins

 

Zwei Tabellen verknüpfen

Betrachten Sie folgende Abfrage, um zu verstehen, wie ein einfacher Inner-Join ausgewertet wird. Sie beantwortet die Frage: Welche Produktgrößen wurden in der Menge bestellt, die der Lagermenge entspricht?

SELECT DISTINCT Name, Size,
    SalesOrderItems.Quantity
FROM Products JOIN SalesOrderItems
ON Products.ID = SalesOrderItems.ProductID
  AND Products.Quantity = SalesOrderItems.Quantity;
name Size Quantity
Baseball Cap One size fits all 12
Visor One size fits all 36

Sie können die Abfrage wie folgt interpretieren. Beachten Sie, dass es sich hierbei um eine konzeptuelle Erklärung der Verarbeitung dieser Abfrage handelt, um die Semantik einer Abfrage mit einem Join zu erklären. Die Erklärung stellt nicht dar, wie SQL Anywhere die Ergebnismenge tatsächlich ermittelt.

  • Es wird ein Kreuzprodukt der Tabellen "Products" und "SalesOrderItems" erstellt. Ein Kreuzprodukt enthält alle Zeilenkombinationen der beiden Tabellen.

  • Es werden alle Zeilen ausgeschlossen, bei denen die Produkt-IDs nicht identisch sind (mithilfe der Join-Bedingung Products.ID = SalesOrderItems.ProductID).

  • Es werden alle Zeilen ausgeschlossen, bei denen die Menge nicht identisch ist (mithilfe der Join-Bedingung Products.Quantity = SalesOrderItems.Quantity).

  • Es wird eine Ergebnistabelle mit drei Spalten erstellt: "Products.Name", "Products.Size" und "SalesOrderItems.Quantity".

  • Es werden alle Duplikatzeilen ausgeschlossen (mithilfe des Schlüsselworts DISTINCT).

Eine Beschreibung der Berechnung von Outer-Joins finden Sie unter Outer-Joins.