SQL Anywhere Studio Erste Orientierung
Daten aus mehreren Tabellen auswählen
Zwischen zwei durch einen Fremdschlüssel verbundenen Tabellen gibt es viele Joins. Der häufigste Join beschränkt Fremdschlüsselwerte auf eine exakte Übereinstimmung mit den Primärschlüsselwerten.
Der Operator KEY JOIN verknüpft zwei Tabellen basierend auf der Fremdschlüsselbeziehung. Das heißt, Adaptive Server Anywhere generiert eine ON-Klausel, die die Primärschlüsselspalte einer Tabelle mit der Fremdschlüsselspalte der anderen Tabelle gleichsetzt.
Das Beispiel im vorherigen Abschnitt grenzt Fremdschlüsselwerte in der Auftragstabelle sales_order daraufhin ein, dass sie den Primärschlüsselwerten in der Mitarbeitertabelle employee entsprechen müssen.
SELECT employee.emp_lname,
sales_order.id,
sales_order.order_date
FROM sales_order JOIN employee
ON sales_order.sales_rep = employee.emp_idDie Abfrage kann einfacher mithilfe eines KEY JOINS ausgedrückt werden.
SELECT employee.emp_lname,
sales_order.id,
sales_order.order_date
FROM sales_order KEY JOIN employeeKEY JOIN ist lediglich eine Kurzform für die Eingabe der ON-Klausel. Die beiden Abfragen sind identisch. KEY JOIN ist die Standardeinstellung, wenn Sie JOIN angeben, aber weder CROSS, NATURAL oder KEY festlegen noch eine ON-Klausel verwenden.
Wenn Sie sich das Diagramm der Mitarbeiterdatenbank ansehen, werden die Fremdschlüssel durch Linien zwischen den Tabellen dargestellt. Überall dort, wo zwei Tabellen im Diagramm durch eine Linie verbunden sind, können Sie den Operator KEY JOIN verwenden.
Ein Diagramm der Beispieldatenbank finden Sie unter Zur Beispieldatenbank.
Sie können zwei oder mehr Tabellen durch Join-Operatoren verknüpfen. Folgende Abfrage verwendet vier Tabellen, um den Gesamtwert der von den einzelnen Kunden platzierten Aufträge aufzulisten. Sie verbindet die vier Tabellen customer, sales_order, sales_order_items und product mithilfe der einzelnen Fremdschlüssel-Beziehungen zwischen den verschiedenen Tabellenpaaren.
So listen Sie Unternehmen und den Gesamtwert ihrer Bestellungen auf
In Interactive SQL geben Sie im Fensterausschnitt "SQL-Anweisungen" Folgendes ein und drücken F5, um die Anweisung auszuführen.
SELECT company_name,
SUM( sales_order_items.quantity *
product.unit_price) AS value
FROM ( ( customer KEY JOIN sales_order )
KEY JOIN sales_order_items )
KEY JOIN product
GROUP BY company_name| company_name | value |
|---|---|
| Bensoul's Boutique | 1332 |
| Bush Pro Shop | 2940 |
| Sterling & Co. | 6804 |
| Ocean Sports | 3744 |
| ... | ... |
Ihre Ergebnismenge wird eventuell in einer anderen Reihenfolge angezeigt. Die Reihenfolge der Zeilen in der Ergebnismenge spielt keine Rolle.
In diesem Beispiel wird der Operator SUM verwendet, eine Aggregatfunktion. Für Aggregatfunktionen werden GROUP BY-Klauseln benötigt, mit denen Werte einzelner Zeilengruppen ermittelt werden können. Im vorliegenden Beispiel wird für jeden Firmennamen (company_name) die Summe von sales_order_items.quantity * product.unit_price – also der Gesamtbetrag pro Produkttyp – berechnet. Auf diese Weise wird der Umsatz jedes Unternehmens dargestellt.
Durch die Klammern in der FROM-Klausel wird die Reihenfolge klarer, in der die Joins erstellt wurden.
Weitere Hinweise zu komplexen Schlüssel-Joins finden Sie unter Schlüssel-Joins.
SQL Anywhere Studio 9.0.1
Copyright © 1989–2004 Sybase Inc. Teil-Copyright © 2001–2004 iAnywhere Solutions Inc. Alle Rechte vorbehalten.