Marcus: Select Statement über 3 Tabellen

Hallo !

Ich habe folgende Datenbanktabellen

orte
---
plz
ort
kid

Bahn_Zuordnung
--------------
kid
bahnhof1_id
bahnhof1_km
bahnhof2_id
bahnhof2_km
bahnhof3_id
bahnhof3_km
bahnhof4_id
bahnhof4_km
bahnhof5_id
bahnhof5_km
bahnhof6_id
bahnhof6_km
bahnhof7_id
bahnhof7_km

bahnhof
-------
bahnhof_id
bahnhofname

Folgender Hintergrund: Ich möchte wenn ich über die PLZ einen Ort suche, dass mir alle Bahnhöfe (7 Stück) im Umkreis angezeigt werden soll.

Folgendes Statement gibt mir aber immer nur 1 Bahnhof aus:
SELECT orte.*, Bahn_Zuordnung.*, bahnhof.*
FROM (orte INNER JOIN Bahn_Zuordnung ON [orte].[kid]=[Bahn_Zuordnung].[kid]) INNER JOIN bahnhof ON [Bahn_Zuordnung].[bahnhof6_id]=[bahnhof].[bhf_id]
WHERE ((([orte].[plz])='27729'));

Hat jemand eine Idee wie das Statement für 7 Bahnhöfe auszusehen hat ?

Vielen Dank

Gruss

Marcus

  1. Hi,

    Bahn_Zuordnung

    kid
    bahnhof1_id
    bahnhof1_km
    bahnhof2_id
    bahnhof2_km
    bahnhof3_id
    bahnhof3_km
    bahnhof4_id
    bahnhof4_km
    bahnhof5_id
    bahnhof5_km
    bahnhof6_id
    bahnhof6_km
    bahnhof7_id
    bahnhof7_km

    ei, caramba. Gibt es grundsätzlich _exakt_ sieben Bahnhöfe in der Umgebung? Wenn nicht, ist dies ein klarer Fall für eine n:m-Beziehung:

    umgebende_Bahnhoefe
    -------------------
    ref_ort             -- Es macht Sinn, den Namen der referenzierten Tabelle zu nennen.
    ref_bahnhof
    entfernung

    PK ist (ref_ort, ref_bahnhof)

    bahnhof

    bahnhof_id
    bahnhofname

    In welchem Ort befindet sich der Bahnhof? Ein ref_ort passt auch hier. Das kollidiert dann auch nicht mit den umgebenden Bahnhöfen.

    Folgender Hintergrund: Ich möchte wenn ich über die PLZ einen Ort suche, dass mir alle Bahnhöfe (7 Stück) im Umkreis angezeigt werden soll.

    Demnach wäre in der Ort-Tabelle der PK die PLZ?

    Folgendes Statement gibt mir aber immer nur 1 Bahnhof aus:

    Du musst mich erst davon überzeugen, dass Dein DB-Layout sinnvoll ist, bevor ich versuche, Statements darauf zu reparieren ;-) Vielleicht hilft Dir die neue Struktur, das richtige Statement zu entwickeln.

    Cheatah