SQL JOIN über mehrere Spalten
Marco1984
- datenbank
Hallo,
ich habe ein problem bei einer für mich als sql anfänger schwierigen query es geht um folgendes.
ich habe eine Tabelle(Fahrt) mit den Spalten:
Fahrt:
Fahrt_ID Fahrer Beifahrer Fahrzeug Startzeit Startort Zielort
Beifahrer und Fahrer sind Fremdschlüssel aus Person(die Ids)
Person
Person_ID Name Vorname weitere spalten
Start und Zielort sind Fremdschlüssel aus Orte(die Ids)
Orte:
Ort_ID Ort Einwohnerzahl......
So nun suche ich eine query die mir alle Fahrten anzeigt mit fahrern und beifahrern sowie start und zielort. Allerdings nicht die ids sondern bei beifahrer den vor und nachnamen und bei start und ziel ort den ort als string.
Ich weiß das es über join geht und eventuell noch ein as dabei sein muss aber ich krieg irgendwie gar nichts dazu gebacken. Würd mich also freuen wenn jemand eine idee dazu hat.
VG Marco
Hallo Marco,
ich habe ein problem bei einer für mich als sql anfänger schwierigen query es geht um folgendes.
ich habe eine Tabelle(Fahrt) mit den Spalten:
Fahrt:
Fahrt_ID Fahrer Beifahrer Fahrzeug Startzeit Startort Zielort
das sieht genauso aus wie das Problem in https://forum.selfhtml.org/?t=165008&m=1075889.
Ich weiß das es über join geht und eventuell noch ein as dabei sein muss aber ich krieg irgendwie gar nichts dazu gebacken. Würd mich also freuen wenn jemand eine idee dazu hat.
Folge meine Lesetipps und wende meinen dortigen Vorschlag auf Dein Problem an.
Freundliche Grüße
Vinzenz
Vielen Dank für deine Antwort.
das hat sehr geholfen, habe jetzt das fast komplette statement zusammen. Nur ein Problem gibts noch der Beifahrer muss nicht zwangsläufig existieren, wie kann man das abbilden!? Zurzeit bekomme ich nur ergebnisse wenn fahrer und beifahrer existieren.
VG Marco
Hallo Marco,
das hat sehr geholfen, habe jetzt das fast komplette statement zusammen. Nur ein Problem gibts noch der Beifahrer muss nicht zwangsläufig existieren, wie kann man das abbilden!? Zurzeit bekomme ich nur ergebnisse wenn fahrer und beifahrer existieren.
Nun ja, einen Fahrer wirst Du wohl immer brauchen, deswegen ein INNER JOIN.
Ein Beifahrer ist nicht erforderlich (wir sind ja nicht bei der LKW-Fahrer bei
der Bundeswehr), deswegen verwendest Du dort einen LEFT JOIN von der Fahrtentabelle auf die Personentabelle (als Beifahrertabelle).
Näheres zu LEFT JOIN bei Rouvens Einführung in Joins.
Freundliche Grüße
Vinzenz
Super jetzt klappt die Abfrage im pgsql abfrage editor, nur noch ein Problem gibts:-) ich gehe mit while($res=pg_fetch_object($result)) durch das ergebnis wie greife ich auf die vornamen/nachnamen zu,
$res-> beifahrer.vorname funktioniert leider nicht.
VG Marco
OK ich habe mitbekommen das man mit AS den Spaltennamen ändern kann...
VIELEN DANK FÜR DEINE HIFLE!
VG