Supportnet / Forum / Datenbanken
Problem bei SQL Abfrage
Frage
Hallo ich benötige mal eure Hilfe!!!
Ich benötige in Access97 eine SQL Abfrage die sich über mehrere Tabellen erstreckt.
[*] Tabelle 1 ist meine Haupttabelle (Hpt_tbl) mit 3
wichtigen Feldern die abgfragt werden sollen.
[*] Tabelle 2 (z_tbl) ist ein zusammenschluss von
Tabelle 3 und Tabelle 4
[*] Tabelle 3 (bautbl) Und Tabelle 4 (perstbl)
enthalten die eigentlichen daten
[u] Hpt_tbl[/u]
[*] bauid
[*] strid
[*] erl
Die drei Felder sind verknüpft mit z_tbl.ID
[u] z_tbl[/u]
[*] ID
[*] bauid
[*] persid
Das Feld z_tbl.bauid ist verknüpft mit bau_tbl.bID
Das Feld z_tbl.persid ist verknüpft mit perstbl.pID
[u] bau_tbl[/u]
[*] bID
[*] bezeichnung
[*] anschrift
[u] perstbl[/u]
[*] pID
[*] Name
[*] Anschrift
Was ich in der Abfrage erreichen möchte ist die Bezeichnung und den Namen zu erhalten.
Dies bei allen drei angegebenen Feldern der Hpt_tbl
Ich hoffe mal das ich dies relative gut erklären konnte was ich erreichen möchte.
Danke
mfg
tobi
Antwort 1 von firefox
Ein paar Fragen:
Was heißt den "Die drei Felder sind verknüpft mit z_tbl.ID " genau? Jedes Feld einzeln oder wie würde ein Inner Join zwischen den beiden Tabellen aussehen?
Soll die z_tbl.ID eine m:n verknüpfung abbilden?
Was heißt den "Die drei Felder sind verknüpft mit z_tbl.ID " genau? Jedes Feld einzeln oder wie würde ein Inner Join zwischen den beiden Tabellen aussehen?
Soll die z_tbl.ID eine m:n verknüpfung abbilden?
Antwort 2 von sobi
Jedes der drei Felder aus hpt_tbl ist einzeln verknüpft mit z_tbl.ID also steht in einer Beziehung zu z_tbl.ID. Ansich müsste es ein LEFT JOIN sein.
Bei anderen Feldern wohl auch. aber ich erhalte keine richtige ausgabe.
Wenn ich nur eines der drei Felder in die SQL Anweisung nehme, dann funktioniert es.
SELECT bau_tbl.bezeichnung, perstbl.name
FROM ((hpt_tbl LEFT JOIN z_tbl ON hpt_tbl.erl = z_tbl.ID) LEFT JOIN bau_tbl ON z_tbl.bauid = bau_tbl.bID) LEFT JOIN perstbl ON z_tbl.persid = perstbl.pID
so ungefähr sieht sie aus mit nur einen der drei Felder.
Bei anderen Feldern wohl auch. aber ich erhalte keine richtige ausgabe.
Wenn ich nur eines der drei Felder in die SQL Anweisung nehme, dann funktioniert es.
SELECT bau_tbl.bezeichnung, perstbl.name
FROM ((hpt_tbl LEFT JOIN z_tbl ON hpt_tbl.erl = z_tbl.ID) LEFT JOIN bau_tbl ON z_tbl.bauid = bau_tbl.bID) LEFT JOIN perstbl ON z_tbl.persid = perstbl.pID
so ungefähr sieht sie aus mit nur einen der drei Felder.
Antwort 3 von firefox
Du hast eine Tabelle dir über drei einzelne Felder auf ein Feld in einer anderen Tabelle verküpft sind???
Das ist ja schon im vorhinein zum Scheitern verurteilt...
Was möchtest du denn damit abbilden? Eine verknüpfung macht im allgemeinen nur dann sinn, wenn sie eineindeutig ist...
Das ist ja schon im vorhinein zum Scheitern verurteilt...
Was möchtest du denn damit abbilden? Eine verknüpfung macht im allgemeinen nur dann sinn, wenn sie eineindeutig ist...

