Seitenleiste

Community

SQL

Grundlagen

Datenbanksysteme

Client/Server

Eingebettet

Correlated Sub-Selects

Beispiel: Zeige den Namen, das Gehalt und die Abteilungsnummer jener Personen an, die in ihrer Abteilung am wenigsten verdienen.

Das Problem hierbei ist aber, dass auch Datensätze ausgewählt werden, die in ihrer Abteilung nicht das Mindestgehalt darstellen (Gehalt wird mit irgendeinem Mindestgehalt verglichen)

Wir lösen das Problem, dass das Sub-Select das Gehalt jener Abteilung liefert, die mit der Abteilungsnummer des untersuchten Datensatzes übereinstimmt. Abteilungsnummer von Haupt- und Subselect müssen übereinstimmen (correlieren).

Die Lösung sieht wie folgt aus:

SELECT Name, Gehalt, Abteilungsnummer
FROM Mitarbeiter m
WHERE Gehalt = (SELECT MIN(sal)
                FROM Mitarbeiter
                WHERE Abteilungsnummer = m.Abteilungsnummer)


Achtung! Das Subselect wird für jede untersuchte Zeile des Hauptselects neu aufgerufen und ausgewertet!