Musterlösung vom 08.06.2008:
-- Das aeussere select holt alle Studenten und bildet das Kreuzprodukt -- mit allen relevanten Vorlesungsnummern. Das not exists schliesst dabei die -- Tupel aus der Menge aus, die schon in hoeren enthalten sind, da das insert -- sonst eine Fehlermeldung werfen wuerde. insert into hoeren select s.MatrNr, v.VorlNr from Vorlesungen v, Professoren p, Studenten s where v.gelesenVon = p.PersNr and SWS = 4 and p.Name = 'Sokrates' and not exists (select * from hoeren h where h.MatrNr = s.MatrNr and v.VorlNr = h.VorlNr) -- einfacher geht's mit 'ignore': insert ignore into hoeren select s.MatrNr, v.VorlNr from Vorlesungen v, Professoren p, Studenten s where v.gelesenVon = p.PersNr and SWS = 4 and p.Name = 'Sokrates'