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

SQL Anywhere 12.0.1 (Deutsch) » SQL Anywhere Server - SQL-Benutzerhandbuch » Abfrage und Änderung von Daten » Joins: Daten aus mehreren Tabellen abrufen » Funktionsweise von Joins

 

Joins zwischen zwei Tabellen

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).

 Siehe auch