Relationale Datenbanken
SQL Kurzbeschreibung

Informatik Hartmut Härtl
Johann Penon

Unterabfragen (INNER SELECT)

Hinter Bedingungsoperatoren in WHERE- oder HAVING-Ausdrücken dürfen Unterabfragen verwendet werden. Einschränkungen:

Die innere SELECT-Anweisung darf nur einen Tabellenausdruck enthalten
Die ORDER BY – Klausel darf innerhalb einer Unterabfrage nicht verwendet werden.

Beispiel:

Es sollen alle Kunden mit Kundennummer, Familienname und Ausweisnummer aus einer fiktiven Video-Verleih-Datenbank herausgesucht werden, die Horrorvideos ausgeliehen haben und die in der Tabelle Gewaltverbrecher mit einer Vorstrafe registriert sind.

SELECT KundenNr, Familienname, Ausleihe.AusweisNr
FROM Kunden
WHERE KundenNr =
(SELECT Ausleihe.KundenNr
FROM Ausleihe
WHERE Ausleihe.VideoNr =
(SELECT VideoNr
FROM Katalog
WHERE Genre = 'Horror' ) )

AND Ausleihe.AusweisNr IN

(SELECT Personenkennzeichen
FROM Gewaltverbrecher
WHERE Vorstrafen > 0 )

Gültigkeitsbereich von Spalten (Attributen) bei Unterabfragen

Ein wichtiger Gesichtspunkt bei Unterabfragen ist die Frage, welche Datenobjekte (Datenfelder) in den jeweiligen Unterabfragen gültig (bekannt) sind und verwendet werden dürfen.

abfrage.gif (5039 Byte)

Regel

Attribute (Spalten, Datenfelder) aus den jeweils äußeren Abfrageblöcken dürfen im inneren Abfrageblock an jeder Stelle verwendet werden - aber nicht umgekehrt - .

So können im Abfrageblock 1 'Abfrage 1' nur Attribute aus der Tabelle A verwendet werden. Im Abfrageblock 2 können Attribute aus den Tabellen A und B verwendet werden und im Abfrageblock 3 Attribute aus A, B und C.

Werden in den Tabellen Attribute mit gleichen Attributbezeichnern verwendet, z.B. KundenNr, müssen im jeweiligen Abfrageblock qualifizierte Bezeichner (A.KundenNr, B.KundeNr, C.KundenNr) benutzt werden.

Man spricht bei der Frage des Gültigkeitsbereiches auch von der Reichweite eines Attributes in einer Tabelle. So haben in obigem Beispiel die Attribute der Tabelle A die Reichweite Abfrage 1, Abfrage 2, Abfrage 3 und Abfrage 4. Die Attribute der Tabelle B haben lediglich die Reichweite Abfrage 1 und Abfrage 3.

 

zum Seitenanfang springen

zum Seitenanfang springen