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

SQL Anywhere 11.0.1 (Deutsch) » SQL Anywhere Server - SQL-Benutzerhandbuch » Daten abfragen und ändern » Daten abfragen

 

Die FROM-Klausel: Tabellen angeben

Die FROM-Klausel ist für jede SELECT-Anweisung erforderlich, die Daten aus Tabellen, Ansichten oder gespeicherten Prozeduren abruft.

Die FROM-Klausel kann JOIN-Bedingungen enthalten, die Tabellen verbindet sowie Joins zu anderen Abfragen (abgeleiteten Tabellen) herstellen. Hinweise zu diesen Funktionen finden Sie unter Joins: Daten aus mehreren Tabellen abrufen.

Tabellennamen qualifizieren

In der FROM-Klausel ist die volle Namensgebungssyntax für Tabellen und Ansichten immer zulässig, d.h.:

SELECT Auswahlliste
 
FROM Eigentümer.Tabellenname;

Das Qualifizieren von Tabellen-, Ansichten- und Prozedurnamen ist nur erforderlich, wenn das Objekt einer Benutzer-ID gehört, die sich von der Benutzer-ID der aktuellen Verbindung unterscheidet oder wenn die Benutzer-ID des Eigentümers nicht der Name einer Gruppe ist, zu der die Benutzer-ID der aktuellen Verbindung gehört.

Korrelationsnamen verwenden

Sie können einem Tabellennamen einen Korrelationsnamen geben, um die Lesbarkeit zu verbessern und sich das Eingeben des vollständigen Tabellennamens an jeder Stelle, wo die Tabelle referenziert wird, in Zukunft zu ersparen. Sie weisen den Korrelationsnamen in der FROM-Klausel zu, indem Sie ihn nach dem Tabellennamen wie folgt eingeben:

SELECT d.DepartmentID, d.DepartmentName
FROM Departments d;

Wenn ein Korrelationsname verwendet wird, müssen alle anderen Verweise auf die Tabelle, wie etwa in einer WHERE-Klausel, den Korrelationsnamen statt des Tabellennamens benutzen. Korrelationsnamen müssen den Regeln für gültige Bezeichner entsprechen.

Weitere Hinweise finden Sie unter FROM-Klausel.

Abgeleitete Tabellen abfragen

Eine abgeleitete Tabelle ist eine Tabelle, die direkt oder indirekt von einer oder mehreren Tabellen durch die Berechnung eines Abfrageausdrucks abgeleitet wird. Abgeleitete Tabellen werden in der FROM-Klausel einer SELECT-Anweisung festgelegt.

Das Abfragen einer abgeleiteten Tabelle funktioniert auf dieselbe Weise wie das Abfragen einer Ansicht. Das heißt, dass die Werte einer abgeleiteten Tabelle zu dem Zeitpunkt bestimmt werden, an dem die Definition der abgeleiteten Tabelle evaluiert wird. Abgeleitete Tabellen unterscheiden sich dadurch von Ansichten, dass die Definition einer abgeleiteten Tabelle nicht in der Datenbank gespeichert wird. Abgeleitete Tabellen unterscheiden sich von Basis- und temporären Tabellen, indem sie nicht materialisiert sind und nicht von außerhalb der Abfrage, in der sie definiert sind, referenziert werden können.

Die folgende Abfrage verwendet eine abgeleitete Tabelle (my_drv_tbl), in der der Höchstlohn der einzelnen Abteilungen eingefügt wird. Die Daten in der abgeleiteten Tabelle werden dann mit der Tabelle "Employees" verknüpft, um die Nachnamen der Mitarbeiter zu erhalten, die diese Löhne ausgezahlt bekommen.

SELECT Surname, 
   my_drv_tbl.max_sal AS Salary, 
   my_drv_tbl.DepartmentID 
FROM Employees e, 
  ( SELECT MAX( Salary ) AS max_sal, DepartmentID 
      FROM Employees 
      GROUP BY DepartmentID ) my_drv_tbl
  WHERE e.Salary = my_drv_tbl.max_sal 
  AND e.DepartmentID = my_drv_tbl.DepartmentID
ORDER BY Salary DESC;
Surname Salary DepartmentID
Shea 138948.00 300
Scott 96300.00 100
Kelly 87500.00 200
Evans 68940.00 400
Martinez 55500.80 500

Das folgende Beispiel erstellt eine abgeleitete Tabelle (MyDerivedTable), die eine Rangfolge der Artikel in der Tabelle "Products" erstellt, und fragt dann die abgeleitete Tabelle ab, um die drei am wenigsten teuren Artikel zurückzugeben.

SELECT TOP 3 *
       FROM ( SELECT Description, 
                     Quantity, 
                     UnitPrice,
                     RANK() OVER ( ORDER BY UnitPrice ASC ) 
                 AS Rank 
                 FROM Products ) AS MyDerivedTable
ORDER BY Rank;

Siehe auch: FROM-Klausel.

Andere Objekte als Tabellen abfragen

Die häufigsten Elemente in einer FROM-Klausel sind Tabellennamen. Es ist allerdings auch möglich, Zeilen aus anderen Datenbankobjekten abzufragen, wenn diese eine tabellenähnliche Struktur haben - also eine definierte Menge von Zeilen und Spalten. Sie können beispielsweise Ansichten oder auch gespeicherte Prozeduren abfragen, die Ergebnismengen zurückgeben.

Beispiel: Die folgende Anweisung fragt die Ergebnismenge einer gespeicherten Prozedur namens "ShowCustomerProducts" ab.

SELECT *
FROM ShowCustomerProducts( 149 );