die erste abfrage ist die richtige, da du bei der zweiten
keinerlei bezug zwischen den flugzeugen mit mehr als 20
sitzplätzen zu den entsprechenden piloten herstellst.
wobei innder ersten noch ein kleiner fehler ist:
nicht p.pilotfi sondern f.pilotfi
also:
select PID
From Pilot p, Flugzeug f
Where f.AnzPa > 20 AND f.PilotFI = p.PID
Wenn Du nur die PID des Piloten benötigst, ist diese doch schon in der „Tabelle 2“ enthalten. Also benötigst Du auch keine „join“ beider Tabellen! select PilotFI from „tabelle 2“ where anzpa > 20. Nur wenn Du den Namen (nicht die PID) benötigst, solltest Du den ersten Ansatz wählen.
gruss, Daniel (W.a.t.z.)
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]