Hi!
Also es geht um ein Beispiel aus einer Klausur, nicht aus der Praxis, aber vielleicht kann mir trotzdem jemand helfen:
Gegeben folgendes DB-Schema:
Lieferant(LNr, LName, LStadt)
Ware(WNr, Bezeichnung, Preis)
Kunde(KNr, KName, KStadt)
Auftrag(LNr, WNr, KNr, Menge)
Nun soll ein SQL-Statement geschrieben werden das die Namen der Kunden ausgibt, die von _allen_ aus München stammenden Lieferanten beliefert werden.
Eine Lösung dazu habe ich auch - sie lautet:
SELECT KName FROM Kunde WHERE NOT EXISTS(
SELECT * FROM Lieferant WHERE LStadt = 'München' AND NOT EXISTS(
SELECT * FROM Auftrag WHERE Auftrag.KNr = Kunde.KNr AND Auftrag.LNr = Lieferant.LNr));
Und meine Frage: Wie um Gottes Willen kommt man denn darauf? Ein alternativer Lösungsvorschlag mit NOT EXISTS und NOT IN ist auch noch angegeben, aber auf den bin ich ebensowenig gekommen.
Ich hab irgendwie herumprobiert mit gleich mal alle Kunden holen die von Lieferanten aus München beliefert werden und dann wollte ich irgendwie mit NOT EXISTS diejenigen wieder abziehen, wo nicht derselbe Kunde mit Lieferanten aus München beliefert wird - aber nunja, das hat jedenfalls nicht geklappt, aber auf die obenstehende Lösung wäre ich beim besten Willen auch nicht gekommen.
Grüße
BlueFish