i

Exkurs - Subselect

Eine typische Anfrage könnte sein: Welcher Ort hat die meisten Einwohner in Deutschland? Das Ergebnis kennst Du sicher...

Eine einfache Lösung zur Überprüfung könnte folgender SQL-Befehl sein:

Aus der Ergebnistabelle lässt sich leicht Berlin als größte Stadt Deutschlands herauslesen. Viel schöner wäre es ja allerdings, wenn nur ein Datensatz, also Berlin, angezeigt wurde. Das ist aber nicht so einfach möglich.

Vielleicht hast du ja folgenden SQL-Befehl dafür im Sinn. Probiere es aus, er führt leider nicht immer zum gewünschten Ergebnis. Kannst du erklären warum?

SELECT ort.*, MAX(ort.Einwohner) AS "größte Einwohnerzahl"
  FROM ort, land
 WHERE ort.LNR = land.LNR
   AND land.Name = 'Deutschland'
falsches Ergebnis des MAX-Befehls ohne GROUP BY

Um wirklich den Ort mit den meisten Einwohnern herauszufinden, muss genau der Datensatz gefunden werden, der die meisten Einwohner besitzt. Dafür muss man diese Zahl erst einmal bestimmen:

SELECT MAX(ort.Einwohner) AS "größte Einwohnerzahl"
FROM  ort, land
WHERE ort.LNR = land.LNR
  AND land.Name = 'Deutschland'

-- Mit diesem Ergebnis kann man nun weitersuchen:
SELECT ort.*
FROM  ort, land
WHERE ort.LNR = land.LNR
  AND land.Name = 'Deutschland'
  AND ort.Einwohner =  	3613495  -- Einwohnerzahl von Berlin

Genau diese beiden Schritte lassen sich auch in einen SQL-Befehl zusammenfassen:

Du erkennst sicherlich den SELECT-Befehl, der sich wiederum in der WHERE-Bedingung befindet.

Einzelne Werte für die WHERE-Bedingung oder auch Tabellen für den FROM-Teil können wiederum dem Ergebnis eines SELECT-Befehls entspringen. Man nennt solche geschachtelten SELECT-Befehle auch Subselect-Anweisungen.

Suche

v
3.1.5.3
dev.inf-schule.de/datenbanksysteme/terra/aggregation/exkurs_subselect
dev.inf-schule.de/3.1.5.3
dev.inf-schule.de/@/page/QFVai4vWDNHIdN1x

Rückmeldung geben