Home - SQL Befehle - Datenmanipulation - Daten abfragen www.sqldocu.com
zurück vor



Unterabfragen (Subquery)


Beschreibung
top
Subquery sind SELECT Anweisungen, die selbst eine SELECT Anweisung enthalten. Sie sind im ANSI Standard definiert. Einige RDBMS unterstützen jedoch keine Subqueries (z.B: MySQL, angeblich sollen ab Version 4.1 Subqueries implementiert sein).



Syntax
top
| ... trennt Syntaxmöglichkeiten (entweder oder)
[] ... Syntax innerhalb dieser Klammern ist optional
optional ... Syntax in dieser Zeile ist optional
Vergleichsoperator ...   = oder < oder > oder <> usw. siehe Funktionen
Hinweis:
Alle oben angeführten Optionen entsprechen dem ANSI Standard. Im Moment wird der beschriebene Syntax nicht vollständig von RDBMS unterstützt. Dies wird sich in Zukunft sicher ändern. Wir gehen auf diejenigen Optionen ein, die von nahezu allen RDBMS interpretiert werden.

Beispiele:
SELECT Spalte1 FROM Tabelle1 WHERE Spalte2 = (SELECT MAX(Spalte3) FROM Tabelle2)
SELECT Spalte2 FROM Tabelle1 WHERE Spalte2 IN (SELECT Spalte3 FROM Tabelle2)
SELECT Spalte2 FROM Tabelle1 WHERE Spalte2 > ALL (SELECT Spalte3 FROM Tabelle2)


Beispiel Tabellen:
top
Diese Tabellen werden verwendet um SQL besser darstellen zu können.


TabelleName: maedchen
Spalte1 hat den Namen name
Spalte2 hat den Namen gewicht

Spaltenname name gewicht
Reihe 1 Michaela 71
Reihe 2 Kati 48
Reihe 3 Conny 63
Reihe 4 Linda 56
Reihe 5 Andrea 65
Reihe 6 Susanne 66

TabelleName: jungs
Spalte1 hat den Namen name
Spalte2 hat den Namen gewicht

Spaltenname name gewicht
Reihe 1 Stefan 74
Reihe 2 Gernot 102
Reihe 3 Mathias 57
Reihe 4 Werner 66
Reihe 4 Leo 65
Reihe 4 Axel 78



SUBQUERY
top
SELECT name, gewicht  FROM  maedchen
WHERE  gewicht = (SELECT MIN(gewicht) FROM maedchen)

MIN(gewicht) liefert das Minimun der Spalte gewicht (48). Vergleichsoperatoren wie = < > <= <> erwarten immer eine Skalar (einzelene Zahl). Liefert der Subquery mehrere Reihen muss der Operator IN, ALL, ANY, SOME verwendet werden.

Ergebnistabelle:
Kati 48

PHP Syntax     PERL Syntax


SUBQUERY MIT IN
top
SELECT name, gewicht  FROM  maedchen
WHERE  gewicht IN (SELECT gewicht FROM jungs)

Es werden alle Maedchen aufgelistet, die gleich schwer sind wie ein Junge.

Ergebnistabelle:
Andrea 65
Susanne 66

PHP Syntax     PERL Syntax


SUBQUERY MIT NOT IN
top
SELECT name, gewicht  FROM  maedchen
WHERE  gewicht IN (SELECT gewicht FROM jungs)

Es werden alle Maedchen aufgelistet, für die es in der Tabelle jungs keinen Eintrag gibt, der ihrem Gewicht entspricht

Ergebnistabelle:
Michaela 71
Kati 48
Conny 63
Linda 56

PHP Syntax     PERL Syntax


SUBQUERY MIT IN ALL, ANY, SOME, EXISTS
top
SELECT name, gewicht  FROM  maedchen
WHERE  gewicht < ALL (SELECT gewicht FROM jungs)

Zum Unterschied von IN sind bei ALL, ANY, SOME, EXISTS alle mathematischen Operatoren (=, <, >, <=, >=, <> usw.) möglich.


top