Liste von Freunden
Sie haben gelernt, wie Sie die 👉 Tabellen legodudes
und legodudes_freunde
kombinieren können, um herauszufinden, wer mit wem befreundet ist.
Im Ergebnis erhalten Sie allerdings noch kaum Informationen über die entsprechenden Freunde, ausser deren id
.
Sie bräuchten also eigentlich nochmal die Tabelle legodudes
, denn die enthält ja alle weiteren Informationen wie etwa den Namen.
Nehmen Sie die Abfrage
SELECT * FROM legodudes, legodudes_freunde WHERE name = 'Botot' and legodude_id = legodudes.id;
und passen Sie so an, dass nicht nur aus den zwei Tabellen legodudes
und legodudes_freunde
, sondern aus den "drei" Tabellen legodudes
, legodudes_freunde
und nochmal legodudes
selektiert wird.
Führen Sie die Abfrage aus und versuchen Sie das Ergebnis zu interpretieren.
Musterlösung
SELECT * FROM legodudes, legodudes_freunde, legodudes WHERE name = 'Botot' and legodude_id = legodudes.id;
Ups — da haben wir ein Problem. Mit Mehrdeutigkeit hatten wir es bereits zu tun, als SQL nicht klar war, auf welche der beiden id
-Spalten wir uns beziehen. Das haben wir präzisiert, indem wir gesagt haben, dass es um die Spalte legodudes.id
geht. Nun haben wir in unserer Abfrage aber zwei Tabellen namens legodudes
.
Jetzt müssen wir also noch weiter präzisieren, auf welche Nennung der legodudes
-Tabelle wir uns beziehen, weil die in unserer Abfrage jetzt zweimal vorkommt (auch wenn es sich natürlich beide Male um genau die gleiche Tabelle handelt). Das machen wir, in dem wir eine der beiden Tabellen in unserer Abfrage temporär umbenennen — wir geben ihr ein sogenanntes Alias.
Dazu müssen wir den FROM
-Teil wie folgt anpassen:
[...] FROM legodudes, legodudes_freunde, legodudes as freunde [...];
Der zweiten Nennung von legodudes
geben wir hier also den "Spitznamen" (das Alias) freunde
.
Passen Sie Ihre Abfrage so lange an, bis Sie als Ergebnis die folgende Tabelle erhalten:
Dazu braucht es sicher folgende Anpassungen:
- Alias für die zweite Nennung der
legodudes
-Tabelle (siehe oben) - Anpassung einer bestehenden Bedingung im
WHILE
-Teil, weil dort nochmal einambiguous column name
-Fehler auftritt - Eine zusätzliche Bedingung im
WHILE
-Teil, damit wir keine Duplikate erhalten (Tipp: schauen Sie sich die Spaltefreund_id
an) - Anpassung der Spalten-Auswahl im
SELECT
-Teil
Speichern Sie Ihre Abfrage als Liste von Freunen.sql
und geben Sie sie ab.

