Ich lese ein Lehrbuch und ich verstehe diese Abfrage nicht: Finde Segler, die alle Boote reserviert haben.AUSSER Befehl - Finde Segler, die alle Boote reserviert haben
- Wir haben 3 Tabellen:
- Sailors: sid, sname, Bewertung, Alter (primär: sid)
- Boote: Gebot (primär: bid)
- Reserven: sid, bid, Tag (primär, sid, Gebot, Tag) (sid Fremdschlüssel für Segler ist, ist Gebot der Fremdschlüssel für Boote)
Für die Abfrage, finden Segler, Habe alle Boote reserviert, da die Antwort lautet:
SELECT S.sname
FROM Sailors S
WHERE NOT EXISTS
((SELECT B.bid
FROM Boats B)
EXCEPT
(SELECT R.bid
FROM Reserves R
WHERE R.sid=S.sid))
Meine Fragen sind:
Gibt es etwas falsch mit der obigen Abfrage? Wenn ich es in MySQL Workbench setzen, es zeigt, dass ich mit der Syntaxfehler haben AUSSER
Neben der Lösung durch das Buch oben gegeben, ist es eine andere Möglichkeit, die Abfrage zu tun: Segler finden, die alle Boote reserviert haben
Danke,
'except' ist in MySQL nicht gültig. Sie können es in SQL Server verwenden. –
Sie können das 'except' in' NOT EXISTS() ' – wildplasser
umschreiben und Sie könnten es sogar in' NOT IN() 'umschreiben: http://stackoverflow.com/q/26697519/905902 – wildplasser