Erweiterung von SQL

Tabellen-Alias

Bei Fremdschlüssel-Beziehungen werden Joins verwendet, um die Daten aus beiden beteiligten Tabellen zu verbinden (vgl. SQL-Join).

SQL Fenster öffnen Bei der Selbstreferenz stellt sich nun das Problem, dass ja zweimal die gleiche Tabelle verwendet werden müsste, was nachvollziehbar zu einer Fehlermeldung führt. Im Beispiel sollen alle Benutzer gefunden werden, die Herr Winkelmann geworben hat:

SELECT benutzer.Name, benutzer.Vorname
  FROM benutzer, benutzer
 WHERE benutzer.WerberPNR = benutzer.PNR     -- Joinbedingung
   AND benutzer.Name = 'Winkelmann'
   AND benutzer.Vorname = 'Paul'

Fehlermeldung bei der Ausführung des SQL-Befehls: Not unique table/alias: benutzer

Lässt man die zweite benutzer-Tabelle im FROM-Teil weg, so ergibt sich zwar keine Fehlermeldung, sondern ein leeres Ergebnis (Warum?). Die Fehlermeldung von oben gibt schon einen Hinweis auf die Lösung:

Wird eine Tabelle in einem SQL-Befehl mehrfach benötigt, so kann die Tabelle mit einem Alias-Namen versehen werden. Für die Ausführung des SQL-Befehls sieht es dann so aus, als ob die Tabelle mehrfach vorhanden wäre. Das bedeutet, dass an allen weiteren Stellen der Alias-Name der Tabelle verwendet werden muss (Attributliste, Bedingung, Sortierung).

SQL Fenster öffnen Im Beispiel:

SELECT neuer.Name, neuer.Vorname
  FROM benutzer AS neuer, benutzer AS werber
 WHERE neuer.WerberPNR = werber.PNR     -- Joinbedingung
   AND werber.Name = 'Winkelmann'
   AND werber.Vorname = 'Paul'
 ORDER BY neuer.Name, neuer.Vorname
Verarbeitung des Alias-Befehl in mehreren Schritten: Gedankliches Kopieren der Tabelle, Umbenennen der Tabellen und Join
  1. Ausgangssituation.
  2. "Scheinbares Kopieren" der Tabelle.
  3. Umbenennen der Tabellen.
  4. Ausführen des Joins.

KlickenKlicke auf die einzelnen Schritte zur Veranschaulichung.

Ergebnis der Abfrage:

Ergebnis des Alias-Befehl

Das gleiche Konzept kennst du schon von der Umbenennung von Attributen in der Ausgabe.

X

Fehler melden

X

Suche