Anfängerfrage: Einfache select Anweisung Ergebnis überraschend

X

Xabbu39

Hallo zusammen,

ich versuche mich gerade, in SQL einzuarbeiten. Dabei bin ich auf folgende Aufgabe gestossen:

Gegeben:

studenten(sid, vorname, nachname)
bewertungen(sid, atyp, anr, punkte)
aufgaben(atyp, anr, thema, maxpkt)

mit folgenden Inhalten

studenten:
101, Lisa, Weiss
102, Michael, Grau
103, Daniel, Sommer
104, Iris, Winter

bewertungen:
101, h, 1, 10
101, h, 2, 8
101, z, 1, 12
102, h, 1, 9
102, h, 2, 9
102, z, 1, 10
103, h, 1, 5
103, z, 1, 7

aufgaben:
h, 1, er, 10
h, 2, sql, 10
z, 1, sql, 14

Abfrage:
select a.atyp, a.anr, a.thema
from aufgaben a, bewertungen b, studenten s
where s.SID = b.SID
and s.nachname = 'Sommer'
and a.atyp = b.atyp and a.anr = b.anr

Soweit ich das verstanden habe, bildet er doch jetzt das karthesische Produkt aus allen drei Tabllen, verknüft also jeden mit jeden, und fängt dann an zu selektieren. Wenn ich das aber versuche nachzumachen, komme ich nur auf zwei Datensätze, nämlich (h, 1, er) und (z, 1, sql). Wenn ich das aber die Datenbank machen lasse, wird mir (z, 1, sql) zweimal ausgegeben. Wieso Mir ist schon klar, das ich das mit distinct unterbinden könnte, aber das will ich erst mal nicht. Vorher will ich verstehen, wieso ich es zweimal bekomme.

Für erläuternde Aufklärung dankbar zeigt sich
Xabbu
 
Zurück