SQL-Abfrage

Hallo,

habe ein kleines Problem. Muß eine SQL-Abfrage machen und bekomme 2 Lösungen, weiß aber leider nicht, welche davon richtig ist :frowning: Aufgabenstellung:

Tabelle 1: Pilot (PID, Name, WohnFh)
Tabelle 2: Flugzeug (FIID, RouteFI, AnzPa, HeimatFh, PilotFI)

wobei PID = ID des Piloten, AnzPA (Anzahl der Passagiere) und PilotFI = Pilot des Flugzeugs (PID) ist.

Frage: wie lauten die PIDs der Piloten, die ein Flugzeug mit >20 Passagieren fliegen ?

Meine Antworten:
select PID
From Pilot p, Flugzeug f
Where f.AnzPa >20 AND p.PilotFI = p.PID

oder
select PID
from Flugzeug, Pilot
where AnzPa >20

Vielleicht kann mir ja jemand helfen, weiß absolut nicht, ob ich auf dem richtigen Weg bin.

DANKE :smile:
Tine

hi tine,

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

Vielen Dank, hat mir wirklich weiter geholfen.

-)

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]