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 » Unterabfragen verwenden

 

Unterabfragen in der WHERE-Klausel

Unterabfragen in der WHERE-Klausel funktionieren als Teil des Zeilenauswahlprozesses. Sie benutzen eine Unterabfrage in der WHERE-Klausel, wenn die Kriterien, die Sie für die Auswahl der Zeilen verwenden, von den Ergebnissen einer anderen Tabelle abhängen.

Beispiel

Sie suchen die Produkte, deren Lagermengen weniger als das Doppelte der durchschnittlich bestellten Menge betragen.

SELECT Name, Description
FROM Products WHERE Quantity <  2 * (
   SELECT AVG( Quantity )
   FROM SalesOrderItems );

Dies ist eine Abfrage in zwei Schritten: Zuerst wird die durchschnittliche Anzahl der Artikel pro Bestellung ermittelt und dann wird gesucht, welche Produkte weniger als das Doppelte dieser Menge betragen.

Die Abfrage in zwei Schritten

Die Spalte "Quantity" der Tabelle "SalesOrderItems" speichert die Anzahl der Artikel, die pro Artikeltyp, Kunde und Bestellung angefordert werden. Die Unterabfrage lautet wie folgt:

SELECT AVG( Quantity )
FROM SalesOrderItems;

Sie gibt die durchschnittliche Menge der Artikel in der Tabelle "SalesOrderItems" zurück, und zwar 25,851413.

Die nächste Abfrage gibt die Namen und Beschreibungen der Artikel zurück, deren Lagermengen weniger als doppelt so hoch sind wie der vorher abgefragte Wert.

SELECT Name, Description
FROM Products
WHERE Quantity < 2*25.851413;

Mit einer Unterabfrage werden die beiden Schritte in einem einzigen Vorgang zusammengefasst.

Zweck einer Unterabfrage in der WHERE-Klausel

Eine Unterabfrage in der WHERE-Klausel ist Teil einer Suchbedingung. In Kapitel Daten abfragen finden Sie eine Beschreibung von einfachen Suchbedingungen, die Sie in der WHERE-Klausel verwenden können.