Die Problemanweisung für die SQL-Abfrage besteht darin, alle Piloten zu finden, die die in der Plane-Tabelle aufgeführten Ebenen fliegen können. Also haben wir im Grunde eine Pilot-Tabelle, die zwei Spalten hat, nämlich Pilot-Namen und die Ebenen, die sie fliegen können, und die zweite Tabelle, die Ebenen-Tabelle genannt wird, die nur eine Spalte hat, nämlich die Planes-Spalte. Also müssen wir alle Piloten finden, die alle Ebenen fliegen können, die in der Ebenen-Spalte der Ebenentabelle aufgeführt sind. Ich weiß, dass einer der Wege ist, über relationale Teilung vorzugehen, aber gibt es einen anderen Weg, dies zu lösen? Das Tabellenschema lautet wie folgt: Pilot (Pilot_Name, Ebenen) Ebene (Ebenen) Das zeigt die Pilot-Tabelle besteht aus 2 Spalten und die Ebene-Tabelle besteht aus einer einzelnen Spalte. Der Code unten ist die Lösung für das Problem gesetzt Divison mit:Lösen einer SQL-Abfrage, die eine Division durch eine andere Methode einbezieht
SELECT DISTINCT pilot_name
FROM PilotSkills AS PS1
WHERE NOT EXISTS
(SELECT *
FROM Hangar
WHERE NOT EXISTS
(SELECT *
FROM PilotSkills AS PS2
WHERE (PS1.pilot_name = PS2.pilot_name)
AND (PS2.plane_name = Hangar.plane_name)));
Diese Abfrage gibt das gewünschte Ergebnis. Aber ich habe mich gefragt, ob es eine andere Methode gibt, um diese Frage zu lösen, ohne das oben erwähnte Konzept der Mengenteilung zu verwenden.
Sie Titel, Sie Frage und Ihr Code scheint nicht richtig .. Verwandte .. zeigen Sie eine ordnungsgemäße bd-Schema und Beispieldaten für Ihr Verständnis verstehen – scaisEdge