| Home - SQL Befehle - Datenmanipulation - Daten abfragen | www.sqldocu.com | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| zurück | vor | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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).
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)
Diese Tabellen werden verwendet um SQL besser darstellen zu können.
TabelleName: maedchen Spalte1 hat den Namen name Spalte2 hat den Namen gewicht
TabelleName: jungs Spalte1 hat den Namen name Spalte2 hat den Namen gewicht
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.
PHP Syntax
PERL Syntax
Ergebnistabelle:
SELECT name, gewicht FROM maedchen WHERE gewicht IN (SELECT gewicht FROM jungs)
Es werden alle Maedchen aufgelistet, die gleich schwer sind wie ein Junge.
PHP Syntax
PERL Syntax
Ergebnistabelle:
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
PHP Syntax
PERL Syntax
Ergebnistabelle:
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.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||